ICFPCに初参加しました!

@xhl_kogitsuneさんに誘って頂き、今回ICFPCに初参加しました。
ので、感想とか反省とか少し書いてみます。
チームメンバは
@xhl_kogitsuneさん
@inouehさん
@thimuraさん
@mayahjpさん
@kazegusuri
と自分でした。

結論から言うと俺何もしてない!
(けど得点はいってた!)

初日(8月9日)

この日は休みを取っていなかったので仕事終わりから参加。
休憩時間等に軽く問題は見たけどあまりちゃんと把握していない状態で夜8時過ぎにメンバのもとへ到着。
そこにはThinkPadだらけの怪しい集団が。
着いたときには既に全列挙型のソルバができあがっていた。
一人出遅れた感がいっぱいでした。
とりあえずPC起動して問題開いて上からだだーっと見ていく。
同時にほぼ未設定だった自分のUbuntuさんの環境を構築して
用意してもらったリポジトリからソースをとって少し眺めたりしてましたが、そのままひとまずご飯を食べて解散。
帰宅後このままではまずいと思って何かしようと試みるも問題を読み直して概ね把握したところで寝落ち・・・

ちなみに@xhl_kogitsuneさんが一人頑張ってlightning divisionの得点を稼いでくれていた。
すごい!俺何もしてないのにポイント入ってる!みたいな。

二日目(8月10日)

壊れた携帯をdocomoショップに持っていったりしていて出遅れる。
メンバのもとへ到着したのは既に夕方・・・
この日は@xhl_kogitsuneさんと@inouehさんと@kazegusuriがいました
何やら@inouehさんと@kazegusuriは枝がりを頑張っている様子。
@xhl_kogitsuneさんは別方向を模索すべく調査中。
やばい俺何すればいいかアイデアが出てこない。仕事くれ!状態。
ひとまず助言頂いて自分も@xhl_kogitsuneさん側に参加。
何やらSMTソルバなるものがあるらしく@xhl_kogitsuneさんに
すごく大まかに概要を説明してもらって何となく触りだけ理解。
論文?でも読んでみよう開いてみたが一向に進まない!
やばい俺今日も何もしてないよ!の状態で解散
ちなみにこの日は晴海にいたのですが、花火大会とかぶって帰りの電車は混雑しまくり。
リア充爆発しろ。
帰宅後SMTソルバについてもう少し調べておこうと試みる。
Yicesなるものがあるらしいのでそれを少し見ていたが
うまく飲み込めないまま寝落ち・・・

三日目(8月11日)

この日も少し出遅れ15時ぐらい?に到着。
@xhl_kogitsuneさん、@inouehさん、@mayahjpさんがいた。
@inouehさんは積極的に枝狩りをがりがりと、
@mayahjpさんは追加問題用のソルバを書いている様子。
@xhl_kogitsuneさんはz3というSMTソルバに挑戦中。
到着早々またもや俺何しよう状態。
git pullしてソースもってきてとりあえず何かできないか考えていたがうーむ・・・
で、途中で@xhl_kogitsuneさんがEC2のインスタンスあげてくれたので
そちらにちょろっと環境入れてその時点のコードでトレーニング問題を解いてみる。

size30とかでもかなり浅い所に解がある場合も多いようで
列挙するリストサイズを@inouehさんがいれてくれたりしていた。
というわけで、その辺も含め、実際動かす時にヒューリスティックな部分でチューニングできるところとか
そういうのをリソースが潤沢なEC2上で確認するお仕事をはじめる。
が、トレーニング問題だけの特性なのか何なのか、特に人間が何かしてあげるべき部分がみつからない。
ノーマル問題であればほぼ確実に解けている。
逆に追加問題はどう頑張っても無理。(@mayahjpさん待ち)

隣で@xhl_kogitsuneさんから“z3でsize小さめのならとけたー”
という声が。
流石。。。という感じだけどどうもまともに使おうと思うとチューニングが必要なようで今回の導入は諦め。
途中で@thimuraさんがやってきて、通信周りのイケてない実装を修正してくれていた。

そうこうしているうちに@mayahjpさんが追加問題用のコードを完成させる。
レーニングで試してみたりしてこれは本物っぽいという結論に。
これで大方戦う準備ができた?
やばいマジ俺何もしてない!

解散の少し前に実行時の問題指定があまり整理されていないことに気付いたので
ID指定で問題食わせるシェルスクリプトを書いていた
が、テストまでちゃんと終わらせられないまま時間切れ。
解散して帰宅。
俺の役立たず!

翌日はコミケにサークル参加だったので帰宅後はひたすら準備をする。
その間にもskype上では@inouehさんと@mayahjpさんが頑張って問題にあたってくれている。
@xhl_kogitsuneさんも途中から頑張って解いてくれていた。
うぬーわし何もやってない・・・

そのままC84三日目に行って帰ってきてskypeログみて何やら状況を確認。
あぁ・・・ほんとにみなさんお疲れさまでした。

反省

今回初参加だったのですが、俺ほんとに何もしてない・・・
って所で全てが終わってしまいました。
今思うとコアな部分には協力できなくても細かいところで色々できたはず。
(最後に作ってたシェルスクリプトなんて割と序盤にやっときゃもっと効率良かっただろうし
通信周りだって手が空いていたんだから何か手を入れられたかも)
あと、もっと積極的に発言すべきだった。
常に皆から遅れてる感じで、状況確認も含めて色々質問しておくべきだったし
くだらないことでも何か発言していくべきだった。
皆ちゃんと自分で“次こうやろう”というのを決めて行動してたんだけど
↑のこともあってずーっと“えっえっ俺なにしよう!?”って感じで進んでた。
一応、
どこかのループをGPUに投げつけたりできないかなー
とか
InputとOutputの値で絞り込み上手くできないかなーとか
考えたりしてたけどちゃんとした実装イメージができなくてうがーっとなって終わり。
(GPGPUはここ3年ぐらい触ってないし、そもそも分岐いっぱいで余り嬉しくなさそうだった)

総合するとまぁ経験も知識もテクニックも足りてなくて残念!
皆すごい!という感じかなぁ。

でもほんとに面白い問題だったと思います。
72時間の中でトライ&エラーで試行錯誤してチューニングして〜って所も。

もっと力をつけていつかリベンジだなぁ。