A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
I’m really not sure if we can solve it other than using brute force. So, let’s try it:
function isPalindromic(n::UInt64)
#=
# test symmetry (if as string and inverted string are symmetric and therefore palindromic)
=#
isPalindromicNumber::Bool = false
if string(n) == reverse(string(n))
isPalindromicNumber = true
end
return isPalindromicNumber
end
function calcLargestPalindromicNumber(xDN::UInt64)
currentPalindromicNumber::UInt64 = 0;
smallestPossibleNumber::UInt64 = tryparse(UInt64, ("1"*("0"^(xDN-1))));
largestPossibleNumber::UInt64 = tryparse(UInt64, ("9"^xDN));
for i in largestPossibleNumber:-1:smallestPossibleNumber
for j in largestPossibleNumber:-1:smallestPossibleNumber
if isPalindromic(i*j)
if (i*j) > currentPalindromicNumber
currentPalindromicNumber = i*j;
end
end
end
end
return currentPalindromicNumber
end
function parseARGS()
if isempty(ARGS)
xDigitsNumbers::UInt64 = 3;
else
xDigitsNumbers = tryparse(UInt64,ARGS[1]);
end
return xDigitsNumbers
end
function main()
xDigitsNumbers = parseARGS();
largestPalindromicNumber = calcLargestPalindromicNumber(xDigitsNumbers);
println(largestPalindromicNumber);
end
main()
$ julia ProjectEuler0004.jl 2
9009
$ julia ProjectEuler0004.jl 3
906609
$ julia ProjectEuler0004.jl 4
99000099
$ julia ProjectEuler0004.jl 5
9966006699
That looks good!