David Doblas Jiménez 86aff084d8 Clean-up
2021-09-20 18:08:16 +02:00

52 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 44:")
@btime Problem44()
println("")
println("Result for Problem 44: ", Problem44())