ICFPc2010参戦記
- 会社の先輩に誘われて参加。
- Common Lisp と英語が共通言語のチーム。コミュニケーションはIRCとgitのコミットログ。
- 私は、Common Lisp書けない、ICFPc 初参加、月曜は会社で新人研修、なので、見学者扱い。
- 記録: 0点
- 任意の燃料を生成するための工場の生成プログラムを書く段階で断念。(大会の2合目といったところ)
- 大会開始
- 仲間が問題読む。
- 仲間が回路の文法の解析。
- 7時間目 仲間がゲートの入出力を同定。左 L-R(mod 3),右 L*R - 1(mod 3)。
- 12時間目 私 参加。IRCログで以上の経緯を知る。問題を読む。回路シミュレータがもう半分できかけてるし、私の出番はなさそうだ。
- 17時間目 仲間がサーバの入力列同定。
- 20時間目 仲間が backward wire の意味を同定。backward か forward かはゲートの行番号で決まる。入力の初期値は 0 。回路シミュレータが完成に向かう。
- 21時間目 仲間が回路シミュレータ完成。鍵prefix同定。
- 次の問題は、サーバの入力列から鍵prefixを出力するような回路の生成だが、誰も解決できず。
- 回路の記述 -> Graphviz 変換プログラム
- 大会2日目に、Common Lisp を書けない私でも何かできることはないかと思って作った。
- 問題文にあった鍵回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/keycircuit.gif
- 簡単な回路1
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple01detail.gif
- 簡単な回路2
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple02.gif
- 簡単な回路3
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple03.gif
- 簡単な回路4
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple04.gif
- 簡単な回路5
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple05.gif
- 簡単な回路6
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple06.gif
- 入力を出力する回路 (X:Xは気づかなかった)
http://eva-lu-ator.net/~gemma/hatena/icfp2010/identity.gif
- ゲートのダイアグラム
- 常に 0 を出力する 定数回路
- 常に 1 を出力する 定数回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const1.gif
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const1detail.gif
- 常に 2 を出力する 定数回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const2.gif
- 定数回路じゃだめだ、NAND、カウンタ、シフトレジスタ…
- ゲートをとりあえず4つ以下とかで並びかえ全探索すれば手がかりになるかも…でも Common Lisp じゃないと…
- 仲間の Common Lisp を読めず、書けず、さりとて再実装する勇気もない自分がうらめしい。
- 日本時間 月曜は会社で新人研修。
- 日本時間 月曜21時に大会終了。何もできなかった。情けない。
- 男はつらいよ柴又慕情を見ながら、酒を飲み、下品なtweetをして、ふて寝した。
- 「あんときの酒は、辛口でしたネェ」
来年は Common Lisp でチームに貢献するぞ。