三角形数序列中第 n 项的定义是: tn = ½n(n+1); 因此前十个三角形数是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …
通过将一个单词中每个字母在字母表中的位置值加起来,我们可以将一个单词转换为一个数。
例如,单词SKY的值为19 + 11 + 25 = 55 = t10。如果单词的值是一个三角形数,我们称这个单词为三角形单词。
words.txt (右键另存为)是一个16K的文本文件,包含将近两千个常用英语单词。在这个文件中,一共有多少个三角形词?
def get_word_values(word):
""" 单词的值 """
return sum([ord(w) - ord('A') + 1 for w in word])
def is_tn(y):
""" 三角形单词 """
x = (-1 + pow(1 + 8 * y, 0.5)) / 2
if int(x) == x:
return True
else:
return False
all_word = open('euler42.txt').read()
word_list = all_word.replace('"', '').split(',')
n = 0
for word in word_list:
if is_tn(get_word_values(word)):
n += 1
print(n)