SSブログ

HaskellでGCJ (反省会 - Google Code Jam 2012 - Round 1-A Problem B) [Google Code Jam]

問題BもHaskellでやってみる。
条件によって処理を選択して次の状態を生成していく、という方針でしょうか。
こういうのは書きづらいですね。良いパターンを知りたいです。

case ofで連結版

今回は条件が3つだからいいですけれど、もっと増えるとしんどそう。

条件をリストにして、パターンマッチ機構で条件が成立するまで実行する版

これも、条件が増えるとリストが長ったらしくなっていまいち感が。
実行速度はcase ofの連結版と大体同じでした。

連結関数で連結版

smallサイズでは良いのですが、largeサイズにすると計算が終わりません。。。
solve関数を外に出したり中に入れたりいろいろ試したのですがうまく行きませんでした。
comb関数で一つ目の引数が正を返したら2つ目以降は評価しないと思うので、
計算量は変わらないと思うのですが。

リスト版と連結関数版の全ソースを載せておきます。
リスト版


連結関数版 - largeを解答不能

判定関数の真偽が反転しているのは、途中までspanでやっていたのですがbreakも
試してみたかったからです。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。