Home Project Euler Teaching Projects Gallery

Problem 42: Coded triangle numbers

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?


Algorthim:

Looking back at how I solved this, I did not like it. Triangular numbers are pretty easy to produce The formula given to us and we can store these number in an array.

After doing so, we can find the value corresponding to each name in the list using the ord() function that's built into python. I explained this in earlier problems. This problem is pretty simple

Then, we check for each name value is it's in the array. However, we don't know the maximum value the name value can achieve. So, we can keep changing the number of triangular values we add to the array until we see some changes in the final count value (the number if triangular names)

What I should have done is check if name value is triangular or not by solving $$ \frac{n(n + 1)}{2} = name_{value} $$ and check if n is positive integer.. either case, it works!

Code:

Result:

Answer: 162
Runtime: 4.0 ms