the nth term of the sequence of triangle numbers is given by tn nn1 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 linktarget as a 16k text file containing nearly twothousand common english words how many are triangle words precomputes a list of the 100 first triangular numbers finds the amount of triangular words in the words file solution 162 precomputes a list of the 100 first triangular numbers finds the amount of triangular words in the words file solution 162
import os


TRIANGULAR_NUMBERS = [int(0.5 * n * (n + 1)) for n in range(1, 101)]


def solution():
    
    script_dir = os.path.dirname(os.path.realpath(__file__))
    words_file_path = os.path.join(script_dir, "words.txt")

    words = ""
    with open(words_file_path) as f:
        words = f.readline()

    words = [word.strip('"') for word in words.strip("\r\n").split(",")]
    words = [
        word
        for word in [sum(ord(x) - 64 for x in word) for word in words]
        if word in TRIANGULAR_NUMBERS
    ]
    return len(words)


if __name__ == "__main__":
    print(solution())