Haskell勉強会 実践編#2に参加した

Haskell勉強会 実践編#2に参加した。
最近、あまり参加できてなかったので久しぶりの勉強会だ。


持ち物にHaskell処理系の入ったMacまたはPCという事で、どうやらMacとPCは別物らしい。Macは持ってないのでPCで参加する事にした。


参加者はやや少なめで5人だけ。Haskellブームも去ったというところか。
まぁ日曜の朝9時から昼の12時までという時間帯のせいもあると思う。
本日の内容はHaskellを使って参加者それぞれのペースで、ただひらすらProjectEulerを解いていくというもの。


成果としては何問か解いた後、Problem14の解がわからずに時間終了。
勉強会の帰りの電車の中でも考えてみたが、どうしてもStackOverFlowになってしまう。
この問題とHaskellは非常に相性が悪そう。他の言語ならすぐに答えを見つけられた。


とりあえずオーバーフローは起こさないがもの凄く遅い以下のコードを今から走らせてみよう。
明日の朝には答えが出てるかもしれない。

import Data.List
col :: Int -> [Int]
col 1 = [1]
col n
    |even n = n: col (div n 2)
    |otherwise = n: col (n*3+1)

p14 = foldl (\m n -> max m ((length.col)n)) (1) [1..1000000-1]
main = do print p14


主催のid:ujihisaさん、参加された皆さんお疲れ様でした。


追記(2009/3/9)
朝になっても処理が終わってなかったので、強制終了しました。
アルゴリズムを見直して改めて再挑戦したい。