55 lines
1.4 KiB
Julia
55 lines
1.4 KiB
Julia
#=
|
||
Created on 08 Sep 2021
|
||
|
||
@author: David Doblas Jiménez
|
||
@email: daviddoji@pm.me
|
||
|
||
Solution for Problem 38 of Project Euler
|
||
https://projecteuler.net/problem=38 =#
|
||
|
||
using BenchmarkTools
|
||
|
||
function Problem38()
|
||
#=
|
||
Take the number 192 and multiply it by each of 1, 2, and 3:
|
||
|
||
192 × 1 = 192
|
||
192 × 2 = 384
|
||
192 × 3 = 576
|
||
|
||
By concatenating each product we get the 1 to 9 pandigital,
|
||
192384576. We will call 192384576 the concatenated product of
|
||
192 and (1,2,3)
|
||
|
||
The same can be achieved by starting with 9 and multiplying by
|
||
1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is
|
||
the concatenated product of 9 and (1,2,3,4,5).
|
||
|
||
What is the largest 1 to 9 pandigital 9-digit number that can
|
||
be formed as the concatenated product of an integer with
|
||
(1,2, ... , n) where n > 1? =#
|
||
|
||
results = []
|
||
pandigital = join(['1', '2', '3', '4', '5', '6', '7', '8', '9'])
|
||
# Number must 4 digits (exactly) to be pandigital
|
||
# if n > 1
|
||
for i in 1:10_000
|
||
integer = 1
|
||
number = ""
|
||
while length(number) < 9
|
||
number *= string(integer * i)
|
||
if join(sort(collect(number))) == pandigital
|
||
push!(results, number)
|
||
end
|
||
integer += 1
|
||
end
|
||
end
|
||
return maximum(results)
|
||
end
|
||
|
||
|
||
println("Time to evaluate Problem $(lpad(38, 3, "0")):")
|
||
@btime Problem38()
|
||
println("")
|
||
println("Result for Problem $(lpad(38, 3, "0")): ", Problem38())
|