Life Goes On

まあまあだけど楽しんでる方です

55問目

http://projecteuler.net/index.php?section=problems&id=55
47は逆順にして足すと 47 + 74 = 121 で回文となる。349は 349 + 943 = 1292,
1292 + 2921 = 4213, 4213 + 3124 = 7337 と3回の操作で回文となる。196のように何度操作しても回文にならない数(Lychrel数と呼ぶ)もあると想定されている。
50回操作しても回文にならない数はLychrel数だと仮定したとき、一万未満の数にLychrel数がいくつあるか求める。
この問題も特に工夫は要りません。

main = print $ euler055 50 10000

euler055 :: Integer -> Integer -> Int
euler055 i m = length $ filter (lychrel i) [1..m]

lychrel :: Integer -> Integer -> Bool
lychrel i n
    | (i == 0) = True
    | (n' == rev n') = False
    | otherwise = lychrel (i - 1) n'
    where n' = n + (rev n)
          rev = read . reverse . show