오늘 주일 설교 예화중에 인생에 있어서 100점짜리 단어에 대한 이야기가 있었다. a 는 1점 , b 는 2점 c는 3점 이런식으로 환산해보면 , 아래와 같다.
luck(운) = 47점
love(사랑) = 54점
leadership(리더쉽) = 89점
hardwork(열심) = 98점
attitude(태도) = 100점
예화는 예화일뿐 공학적으로 너무 심각한 의미를 부여하지는 말자.
옆에 계셨던 분이 100점 짜리 단어가 attitude 만 있을까? 하는 질문을 주셨고, 나도 갑자기 궁금해져서 파이썬으로 프로그램을 짜보게 되었다.
과연 100점 짜리는 단어는 얼마나 있을까?
(입력 모수는 1800단어 고교 단어)
[가설]
확률적으로 약 1% 정도 존재할 것이며 attitude 만 있지는 않을꺼야.
[질문]
1. attitude 외에 100점 짜리 단어는 ?
2. 있다면 단어별 전체 분포도는?
[결론]
1. 약 1%의 확율로 영어단어중 100점 단어가 여러개 있다.
2. 분포도에서 75점이 제일 많고 50-110점 사이가 1-2% 대역에 분포해 있다.
3. useless 도 100점 이라는 사실!
[코드 소스]
import matplotlib.pyplot as plt
def cal_word(word):
val = 0
for i in word:
if ord(i) != 10:
#print(i, ord(i)-96, end=' ',)
val += ord(i)-96
return val
f=open('word_list.txt');
lines = f.readlines();
lines = list(map(lambda s: s.strip(), lines))
def stack_word(n , is_show):
cnt = 0;
for x in lines:
if cal_word(x) == n:
cnt += 1
if is_show:
print(x)
return cnt
print('Word Cnt 100')
stack_word(100,1)
ps = [0 for i in range(200)]
for n in range(1,200) :
ps[n-1] = stack_word(n,0)
ps[n-1] = 100 * ps[n-1]/ len(lines)
plt.plot(ps)
plt.ylabel('probability(%)')
plt.xlabel('Word cnt')
plt.grid(True)
plt.show()