Project Euler Problem 42: Coded Triangle Numbers¶
The source code for this problem can be found here.
Problem Statement¶
The \(n^{th}\) term of the sequence of triangle numbers is given by, \(t_n = \frac{n(n+1)}{2}\); so the first ten triangle numbers are:
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 = t_{10}\). 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 twothousand common English words, how many are triangle words?
Solution Discussion¶
Nothing sophisticated here, just map each word to the corresponding number and test whether it is a triangular number and then count them.
Solution Implementation¶
from lib.sequence import Triangulars
from lib.util import load_dataset
def is_triangle_word(word: str) > bool:
""" Check whether `word` is a triangle word
:param word: the word to test
:return: whether `word` is a triangle word or not
"""
mapping = {chr(i): i  ord('A') + 1 for i in range(ord('A'), ord('Z') + 1)}
word_value = sum([mapping[letter] for letter in word])
return word_value in Triangulars()
def solve():
""" Compute the answer to Project Euler's problem #42 """
words = load_dataset("problems", "p042_words", separator=",")
words = [word.strip("\"") for word in words] # strip quotes off each word
triangle_words = filter(is_triangle_word, words)
answer = len(list(triangle_words)) # number of triangle words
return answer
expected_answer = 162

solutions.problem42.
is_triangle_word
(word)¶ Check whether word is a triangle word
Parameters: word ( str
) – the word to testReturn type: bool
Returns: whether word is a triangle word or not

solutions.problem42.
solve
()¶ Compute the answer to Project Euler’s problem #42