Problem 4
問題文(Project Euler - PukiWikiより)
左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。
では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。
自分が書いた答え
answer4 = maximum $ filter (\x -> show x == (reverse $ show x)) ns ns = [x * y | x <- [100..999], y <-[100..999]]
ns の部分をリスト内包表記でこんなに綺麗にかけるとは思わなかった。内部的にはリストモナドらしい。リストモナドの動作原理を考える - あどけない話 で分かりやすく解説されている。