diff --git a/src/Julia/Problem042.jl b/src/Julia/Problem042.jl new file mode 100644 index 0000000..b741859 --- /dev/null +++ b/src/Julia/Problem042.jl @@ -0,0 +1,55 @@ +#= +Created on 12 Sep 2021 + +@author: David Doblas Jiménez +@email: daviddoji@pm.me + +Solution for Problem 42 of Project Euler +https://projecteuler.net/problem=42 +=# + +using BenchmarkTools +using DelimitedFiles + +function triangle_number(num) + return Int(0.5*num*(num+1)) +end + +function word_to_value(word) + return sum(Int(letter)-64 for letter in word) +end + +function Problem42() + #= + 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, a 16K text file containing nearly two-thousand common English words, + how many are triangle words? + =# + + triangular_numbers = [triangle_number(n) for n in 1:26] + ans = 0 + file = "/datos/Scripts/Gitea/Project_Euler/src/files/Problem42.txt" + words = sort(readdlm(file, ',', String)[:]) + + for word in words + if word_to_value(word) in triangular_numbers + ans += 1 + end + end + return ans +end + + +println("Time to evaluate Problem 42:") +@btime Problem42() +println("") +println("Result for Problem 42: ", Problem42())