한 십몇년 전부터 인터넷에 떠돌아다니던 글 중에 [100점짜리 인생]이라는 글이 있지요. 진대제 전 정보통신부 장관이 어느 외국인에게 들은 이후로 국내에 퍼졌다는, 태도(Attitude)의 중요성을 강조한 글입니다. 혹시 모르시는 분은 http://todayhumor.com/?bestofbest_223570… 어 이게 아닌가? 아무튼 [100점짜리 단어]라고 검색해 보시면 나옵니다.
하여튼, 이 이야기를 어쩌다가 어제 다시 듣게 되었습니다. 근데 이야기를 듣기 지루했던 저는, 엉뚱한 생각을 하게 되었습니다. 바로 [Attitude] 이외에 저 숫자가 딱 100이 나오는 다른 영어 단어는 얼마나 될까 하는 것이었지요. 그래서, 집에 와서 이걸 알아내기 위한 작업을 시도해 보았습니다.
먼저, 영어 단어의 목록을 알아내어야 했습니다. 인터넷을 뒤진 결과, GCIDE(https://en.wikipedia.org/wiki/GCIDE)라는 무료 영어 사전 파일의 존재를 알아낼 수 있었습니다. 파일을 열어보니, HTML 파일과 유사한 형태의 영어 사전이 알파벳 단위로 끊어져서 정리되어 있더군요. 저는 XML 파싱을 할 줄 모릅니다만, 다행히도 여기서 표제어 부분만 잘라서 추출하는 것은 그다지 어렵지 않았습니다.
work1.py :
#!/usr/bin/python3
import re
import string
a = re.compile("<ent>.*</ent>")
for x in string.ascii_uppercase:
cide = "CIDE." + x
with open(cide, mode="r", encoding="latin-1") as f0:
f1 = f0.readlines()
for i in f1:
b = a.findall(i)
if b != []:
c = b[0][5:-6]
print(c.lower())
이렇게 하니까 모두 13만 1555개의 영단어가 추출되었습니다.
그리고 이렇게 해서 만든 영어 단어 파일을 가지고 문제의 계산을 실행하는 코드를 만들어 보았습니다.
work2.py :
#!/usr/bin/python3
import string
with open("wordlist.txt", mode="r") as f0:
f1 = f0.readlines()
for a in f1:
a = a[0:-1]
x = 0
for b in a:
if b in string.ascii_letters:
x = x + (ord(b)-96)
print(str(a) + "," + str(x))
마지막으로, 이 두 개의 코드를 연달아 실행하는 배치 파일을 작성했습니다.
work.sh :
#!/bin/sh
./work1.py > wordlist.txt
./work2.py > result.csv
그리고 이렇게 해서 나온 결과물인 result.csv를 스프레드시트 프로그램에서 열어, 점수가 딱 100으로 떨어지는 단어들을 필터로 골라 내었습니다. 1346개가 나오던데, 보니까 어째서인지 개중에 중복되는 것이 몇 개씩 눈에 띄어서 확실하지는 않네요.
하여튼, 점수가 100으로 맞아 떨어지는 단어 중에서 몇 가지 눈에 띄는 것을 골라 소개해 봅니다.
- acknowledge
- aerometer
- analysis
- aneurism
- annually
- attitude
- autoclave
- automated
- awfully
- baby-walker
- bibliophobia
- bizantine
- blissful
- blue-ribbon
- botanist
- boundary
- boycott
- browser
- bubble shell
- caligraphy
- cardiograph
- carpenter
- chimpanzee
- clementine
- clockwise
- companion
- comport
- congress
- corridor
- culture
- deadworks
- delivery
- demobilize
- denominate
- diamondize
- digestive
- discipline
- disjoint
- ditroite
- effectless
- elsewhere
- endoplasma
- excellent
- eye-catching
- fatalistic
- field test
- fluorine
- forgiver
- fountain
- fresh-cut
- gray whale
- hair grass
- harmonics
- hemoglobin
- holograph
- honeycomb
- hospital
- hot-blooded
- immature
- imported
- impotence
- inexist
- innovate
- irritate
- jurassic
- king-size
- liberalism
- lightning
- liquid air
- long-lived
- lubricant
- macro lens
- man-at-arms
- matchmaking
- maximize
- molecular
- mongolian
- moralism
- morphing
- mummify
- neoclassic
- nihilist
- nonhuman
- nostalgic
- off-season
- one-woman
- onside kick
- ornament
- outlier
- personal
- prevent
- primary
- printer
- producer
- pumpkin
- pussy
- quarter
- repress
- reprint
- researcher
- resolved
- restore
- reversal
- roomful
- roommate
- saintlike
- schoolma'am
- schoolman
- scrapbook
- selective
- self-defense
- semaphore
- session
- shooter
- shortcake
- simulate
- sleepyhead
- socialism
- starfish
- status
- stoping
- stress
- striker
- sufficience
- surcharge
- surely
- swimmer
- syndicate
- telephone
- telescope
- temporal
- thickening
- thirty
- towards
- troller
- unavailable
- unformal
- unmanlike
- unmodified
- unbroken
- undress
- vaccinist
- variety
- verbalize
- water gate
- wednesday
- whenever
- whiskey
- wholesale
- writing
- xylose