Haskell 解法
(注明:我写这个解法时只为了练习使用Monad,实际上这个算法非常差)
-- 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.
import Control.Monad
palindrome :: Integer -> Bool
palindrome n
| (even len) = a == reverse b
| (odd len) = a == reverse (tail b)
where
ls = show n
len = length ls
(a,b) = splitAt (len`div`2) ls
maxPalindromeProduct = maximum.filter palindrome $ liftM2 (*) [999,998..100] [999,998..100]
main = print maxPalindromeProduct