2009-06-30 [長年日記]
λ. ICFP Programming Contest 2009
今年も Team Sampou というチーム名で ICFP Programming Contest に参加してた。 今年のメンバーは、私、nobsun、[1..100]>>=penさん、cut-seaさんという感じ。 オンラインでのやり取りにはChatonのhaskell-jpルームを使っていた。
- haskell-ja > Archives > 2009/06/26
- haskell-ja > Archives > 2009/06/27
- haskell-ja > Archives > 2009/06/28
- haskell-ja > Archives > 2009/06/29
今年は、しょうもないバグで時間を使いすぎて出遅れて、2002が誤差のせいでホーマン遷移一回ではクリア出来ないのをどうしようかと考えているうちに時間切れになってしまった、という感じ。 途中では300xの Eccentric Meet and Greet まではギリギリなんとかなるんじゃないかと思ってたけど、見込みが甘かったなぁ。 結局、2002はギリギリで解けたけど、最終的なスコアは Weighted Total Score 1002.1329 (8 problems solved) 。 とても楽しかった72時間だけど、今年も結果を出せなかったのは少し残念。
振り返り
Keep
- 可視化ツールを作ったこと
- 昨年のshinhさんとかを見て可視化重要と思ってたので、作ってみて、確かにそうだと思った。
Problem
- 分業が出来なかった。
- 分業すべきところで、分業出来てなかった。私が土曜日の午前中別の用事があって集まれなかったのが一因。まあ、みんな土台から自分で書きたがるしね。
- しょうもないバグに悩みすぎ。
- Input命令がSqrt命令にデコードされているとか、0xCAFEBABEが0xCAFABABEになってるとか、しょうもないバグで半日以上つぶれた。
- 過剰な抽象化レイヤ
- 昨年、あまりにアドホックなコードを書いてしまい収集がつかなくなってしまったことの反省から、今年はArrowベースのFRP(Functional Reactive Programming)とその上のタスク記述用のMonadを作ったんだけど、これは今回の問題には抽象化レイヤが過剰だった。結果として、それを作るために時間を使いすぎたし、また他の人がいじりにくくしてしまったと思う。
- デバッグ用の口
- 上で書いた抽象化レイヤにはログ出力用の口を用意していなかったので、実行の様子の観察がtrace関数頼りになってしまっていた。ちゃんとログ出力用の口を用意しておくべき。
- 寝不足
- 興奮してあまり寝れていなかった。あまり眠気は感じなかったけど、やっぱり疲れてはいて効率は低下している。コードを書いていると気づきにくいけど、数学的な事を考えると、寝不足なのが直ぐにわかる。
Try
- コードカバレッジツール
- 命令デコードミスについては、コードカバレッジツールを使えば、VMのコードの特定の部分が実行されないことから気づけたはず。GHC にも Haskell Program Coverage (HPC) が付属しているし、カバレッジツールは使えるようにはなっておこう。
- ちゃんと寝る
- ちゃんと寝よう。どうやったらいいのかわかんないけど。