ICFPC2011にid:osa_k(@osa_k)と,Misa_kとして参加しました.
余りちゃんと覚えていないので,時系列が割と無茶苦茶な気がします.
1日目,1限が終わって,osa_kに問題を教えて貰う.λ式とかほとんど触れたことなくて,詰みかと思う.
学校が終わって帰宅して,色々教えて貰っていたら,いつの間にかosa_kが想定外に強い増殖dec砲台を作ってた.
S(K(S dec))get ← x ↓ S(dec)(S(K(S dec))get) ← x
自己増殖砲台ぱない.
これを0で増殖させた後,色んな場所にコピーして打ちまくるのを投げる.
結局20位くらいをさまよいつつ,ゾンビ農場を投げるまでずっとこのまま.
あとはシミュレータを少し作り出す.
S-Kの組み合わせがおいしい事が解って,ループが作れる事が解って,色々出来るようになってくる.
この辺で二日目?
ループを使った掃射とかも作れたが,自己増殖砲台の強さには勝てず,お蔵入り.
ループを使ってゾンビを相手にばらまいて,掃射させる的な物を思い付くものの,結局増殖より強くはならない感じだった.
シミュレータを,相手の事もシミュレート出来るように改造しておく.
zombie状態のシミュを作っている時に,zombieをhelpで使った方がいいという事が解り,helpさせるのを書く.
osa_kが敵の255を速攻で破壊するものを作る.
色々バグったのを紙デバッグしておく.
この辺で三日目?
helpを使ったzombie農場がわりと強いっぽいけど,submitしてもあまりふるわない.
help→Attackにすればいいじゃん!
Lambdaに投げるとLambda生成するみたいなLambda作る.
nを投げると攻撃力にnを入れたattack砲台作ってくれる的な.
S[S{S(Atk)(I)}{K n}][succ] ↑ S[S (K S) (S [K{S{S(Atk)(I )}}] [K])][K succ] ← n
みたいな.色々作ってみると,汎用性あって嬉しい気がして,いくつか作っておく.
そろそろシミュレータを使ってもうちょっとAIチックにしようかという時に,シミュレータに致命的なバグが見つかる.
申し訳ないとしか言いようが無い.
結局時間的に対処できないので,びみょいのを追加して投げて終了.
総評
本当にごめんなさい.
SRMみたいに短いコンテストはともかく,こういうコンテストで自分がコーディングをすると必ず酷いバグが生まれる気がしてならない.
これからはなるべくコーディングは他人任せにした方が良い気がする.
多少λ式作ってたりはしたけど,酷いバグを埋め込んだり,貢献度的にかなりマイナスな感じでご迷惑をおかけした.
λ式を考えるのは実に楽しかった.λ生成λを書いてる辺りで,人間捨てる感が出てきたけど,こんなの序の口なんだろうなぁ.
最後までもっと対ステップ数効率の良いループを探そうとしたりしていたけど,中々難しい.
put-incマシーンなる物が何かという疑問がずっと脳内にへばりついていたりもした.
未だに微妙にテトリス症候群ならぬLTG症候群が発動していて怖い.