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.

Project Euler Problem 4

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!