Daniele Fucini 3503357703
Add comments
Added comments to all the python solutions implemented so far.
2019-09-26 15:57:04 +02:00

62 lines
1.6 KiB
Python

#!/usr/bin/python3
# The nth term of the sequence of triangle numbers is given by, tn = ½n(n+1); so the first ten triangle numbers are:
#
# 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
#
# By converting each letter in a word to a number corresponding to its alphabetical position and adding these values we form a word value.
# For example, the word value for SKY is 19 + 11 + 25 = 55 = t10. If the word value is a triangle number then we shall call the word a triangle word.
#
# Using words.txt (right click and 'Save Link/Target As...'), a 16K text file containing nearly two-thousand common English words,
# how many are triangle words?
from timeit import default_timer
def is_triang(n):
i = 1
j = 1
while j <= n:
if n == j:
return True
i = i + 1
j = j + i
return False
def main():
start = default_timer()
try:
fp = open('words.txt', 'r')
except:
print('Error while opening file {}'.format('words.txt'))
exit(1)
words = list(fp.readline().replace('"', '').split(','))
fp.close()
count = 0
# For each word, calculate its value and check if it's a triangle number.
for word in words:
value = 0
l = len(word)
for j in range(l):
value = value + ord(word[j]) - ord('A') + 1
if is_triang(value):
count = count + 1
end = default_timer()
print('Project Euler, Problem 42')
print('Answer: {}'.format(count))
print('Elapsed time: {:.9f} seconds'.format(end - start))
if __name__ == '__main__':
main()