From e7c2e60c25b3f2d504961335169ab00f7ce67c39 Mon Sep 17 00:00:00 2001 From: daviddoji Date: Wed, 8 Sep 2021 21:00:32 +0200 Subject: [PATCH] Solution to problem 38 in Julia --- src/Julia/Problem038.jl | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/Julia/Problem038.jl diff --git a/src/Julia/Problem038.jl b/src/Julia/Problem038.jl new file mode 100644 index 0000000..13e2c56 --- /dev/null +++ b/src/Julia/Problem038.jl @@ -0,0 +1,56 @@ +#= +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 38:") +@btime Problem38() +println("") +println("Result for Problem 38: ", Problem38())