Files
project-euler/src/Julia/Problems001-050/Problem044.jl
David Doblas Jiménez d9c96f32cf Fix EOF
2021-10-27 11:27:14 +02:00

50 lines
1.2 KiB
Julia
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#=
Created on 14 Sep 2021
@author: David Doblas Jiménez
@email: daviddoji@pm.me
Solution for Problem 44 of Project Euler
https://projecteuler.net/problem=44 =#
using BenchmarkTools
using Combinatorics
function pentagonal(n)
return Int(n * (3 * n - 1) / 2)
end
function Problem44()
#=
Pentagonal numbers are generated by the formula, Pn=n(3n1)/2.
The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their
difference, 70 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their
sum and difference are pentagonal and D = |Pk Pj| is minimised.
What is the value of D? =#
dif = 0
pentagonal_list = [pentagonal(n) for n in 1:2500]
pairs = combinations(pentagonal_list, 2)
for p in pairs
if reduce(+, p) in pentagonal_list && abs(reduce(-, p)) in pentagonal_list
dif = (abs(reduce(-, p)))
# the first one found would be the smallest
break
end
end
return dif
end
println("Time to evaluate Problem $(lpad(44, 3, "0")):")
@btime Problem44()
println("")
println("Result for Problem $(lpad(44, 3, "0")): ", Problem44())