--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008/10/02

Project Euler: Problem 4 修正

Project Euler: Problem 4 - たろうbぉg が間違っていることが発覚した。ので修正。

まぁ改めて考えてみれば当然なわけで。先日のプログラムであれば、90 * 1 が 89 * 100 よりも大きいことになってしまう。というわけで回文判定した数値リストの最大値を取るように修正した。全パターン総当たりになるため、ちょっと時間かかるようになった。

実行結果

$ runhaskell 4.hs
906609

プログラム

 1 kaibun s = let len = length s
 2                (left, right@(_:rest)) = splitAt (len `div` 2) s
 3              in if even len
 4                     then left == reverse right
 5                     else left == reverse rest
 6
 7 stupid = maximum $ filter (kaibun . show) $ nums 999 999
 8     where nums 99 _ = []
 9           nums (x+199 = nums x x
10           nums x y = x*: nums x (y-1)
11
12 main = print $ stupid
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。