のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

Problem 4

3桁の数同士の積で得られる最大の回分数を求める

まずはリストが回分かどうかは判定するisPalindromeを準備する。これは鉄板。一応補足しておくと、こいつの型は[a] -> Bool でリストを引数に取る。1つの数(型で言うとInt)を評価することはできない。よって後でshowを使って数列を文字列にする心積もりをしておく。


あとはHaskellらしくリスト内包表記で3桁の数同士の積を網羅して、filter isPalindromeで篩にかければ解決するはず。もう1つの問題は「最大の」数をどうやって拾うか。これは趣味の問題が多分にあるが、maximumを使うよりreverse.sortして先頭の数を拾うほうが動きが軽い気がした。


できた☆