func.4 objects

進捗しない日記 プログラミングとか

super con2014で頑張ったおはなし

2/3年ぶりです!!!!!!111!

 

いやほんと書こう書こうと思いながら書かないので書けないんですよ(意味不明)

 

で、人生で初めて自力で出れた大イベント「super con2014」が(一月以上前に)終わりまして、忘れない内にどんな感じだったかを書いておこうかなぁという感じです。というかもう結構忘れました。

 

 肝心の戦績なんですけど..

 

結果は優勝です!!!!!

うわぁぁぁやったぁぁぁぁ!!!11!!!11!

 

って感じでした(完全にブログ書くのが遅すぎて感動が再現できない程になっている)

とにかく優勝です!頑張りました

でPCKは落ちました。悲しい。

super con(マラソン)と競技は本当に全く別物で、たとえ競技が苦手だったとしてもsuper conで上位に入れる可能性,優勝できる可能性は十二分にあります。競技できないマンでも諦めないでください!!

 

1日目

 今回の大会はTOKYOで行われるということで、生まれて初めてのTOKYO入りでした...

夜行バスで行ったんですけど、バスの中で想像以上に寝られず、微妙な東京入りとなりました。

新宿だとか原宿だとか名前だけ聞いたことのある土地に初めて足を踏み入れ、途中で相方と合流し、東工大に到着。(このころからingressをはじめていたらなぁ...)

到着した時集合場所が分からなかったのでその辺の人に聞き、aQc0untチームとちょびっとお話して(ここでkyuridenamidaさんがWorld Wideであることを再確認する)ギリギリで会場入り

 

ここで開会式みたいなのと共に本戦問題が配られます。自分はてっきり予選の問題(格子状のマップでの最長経路問題みたいな)の拡張版が出ると勘違いしていて戸惑いました。結果的にはかなり良い問題でした。

ちなみにその問題はsuper con2014のサイトから見ることが出来ます。ざっくり言えばテトリスをして一番強かった人の勝ちって感じです(本当にざっくり)

 

でまぁその後試合会場(といってもPCルームって感じの部屋でしたね)に行って、並列化処理(MPIと呼ばれる、スパコン特有の並列化って感じのもの)の講義を受けつつ、本戦問題を考えつつって感じでパソコンとにらめっこしていました。

相方はこのコンテスト前にセキュキャンというセキュリティー関係の大会(ざっくり)に、教える側(チューターと呼ばれている)として出場していたんですけど、どうもそこに出てた人が出場していたみたいで、挨拶と圧力とハラスメントを交わしました。

 

初日は何も書けませんでした。

問題に対する良い感じの解法を探していたんですけど、パッと思いつかず苦戦... まぁ終わり頃に方針が(頭のなかで)決まり、どう実装するかなぁって悩んでました。

 

でホテルに帰ってちょっとだけコーディングして寝ました。

高専プロコンで先輩方が死にそうになっていたので、今回の大会はなるべく夜更かししないぞーと思って、あんまり夜更かししませんでした。

あとsuper con出場者wikiが情報戦の空中戦してました。

 

[コードのおはなし]

[この時点で、評価関数を用いた貪欲法(パラメーターのMPI探索は考えていなかった)でやるかなぁという方針が決まる。パパっと組めたら貪欲する際に広がるパターンを1段潜り、そこからもう一度探索した結果で最も良い値がきた位置に置く(ビームサーチらしきもの)というのを思いついたが、結果的に組めず]

2日目

 殆ど記憶に無い一日でした...たしかMPI講座の続きがあったと思います。

この日はピースの回転だとかのどうでも良い所でバグ死を乱発させひたすらフラストレーションが溜まる一日でした。

 

でホテル帰ってきてから、実はraspiを持ってきていたんですけど、それをホテルの有線に繋ごうと奮闘しました。

案の定、テザリングすら拾ってくれなくなり諦めました。

 

[ピースセットの回転データ登録がクソみたいに手間取り、バグらせまくりで死。今思えばピースの回転データなんて手動で登録しても良かったし、執着は良くない]

3日目

MPI講座が終わり、本格的なコーディングが始まりました。

っとは言っても相変わらず昨日のバグを引きずっており、直すのに必死でした.... まぁ何とか治ったんですけど。

でこの日の終わり頃、初めて出力が出ました...辛かった..

この時点で最良のケースでだいたい16段でした。

 

[ここで初めて出力が出る そもそもやってみないと分からない系の解法なので(結局パラメータ次第)出力が出るまで気が気でなかった。 適当なパラメータで20段くらい、良い感じに設定して10段を吐くコードだった。とりあえず人力で良い感じのパラメータを探していた時、MPIでパラメータの値を探索したら良いと思い実装し始める。ここで思いつかなければ負けていた]

 

 4日目

あれよあれよと(コーディングの)最終日に。

この時点でMPIに全く手を付けれておらず、死にそうでした。その上寝坊して死にました。(実は2日目も寝坊した)

実装にハテナが飛ぶとデバックせずチューターに聞くクソみたいなコーディングスタイルでゴリ書きし、どうにかこうにかsubmit30分前くらいに完成、ちょろっとデバックして提出しました。

試合終了時、nicotoumチームと微妙な情報戦(向こうも自信があったみたいなので高度な情報戦であった...実際nicotoumは準優勝でしたし)を繰り広げ、やばいなぁやばいなぁとか思ってました。(wikiで最悪でも2段みたいに書かれていたのにも絶望していた)

TSUBAME上での実行が1~2回しか出来ず、死ぬほど心配で...っと言ってもできることはないのでマクドで食べてホテル帰ってRubyで遊んでました。raspiは最初から最後まで出番ナシ。

 

[前日に思いついたMPIでのパラメータの探索は、書き上がってみると意外とめんどくさくなく、MPIらくちんだ~って感じだった(とはいえ4~5時間ぐらい掛かった) 手元で実行した感じだと、2分掛けて大体1~10段。1段がかなり簡単なケースじゃないと出ないことに絶望して、時間を掛けて1段の解を探すことを諦め、1~8段くらいで良いからなるべく早く解いて時間優位を狙う感じのコードにした。(...という建前で、本当は時間ギリギリまで探索できる(中断できる)コードを思いつかなかった)]

 

5日目

結果発表の日です!!!!!!!

初日に集まった会場に集まり、順位の公開を待ちました。

その間に、たしか先生方の紹介とか問題の紹介とか企業の方のありがたいお話とかあったと思うんですけど正直殆ど記憶にありません。結果が気になって仕方がなかった。

で結果発表ですね...

この時失格が1/3いると聞いてかなり絶望でした。デバッグに自信がないことも相まってかなり生きた心地がしなかったです。実際微バグってたので。

でまぁ本戦結果以外に学会奨励賞と企業の人が一緒にコーディングしたいで賞(名前を全く覚えてない...)があったんですが、学会奨励賞を受賞。

にたにたしながら壇上で賞状受け取りました。

ちなみに企業の人(略)賞はaQc0untチームが受け取ってました。流石プロ。というかここでもらってたメダルは優勝メダルよりデカイ。プロの貫禄。

 

その後本戦順位の発表でした。 普通にするのかと思ったら、テストケース1の全員のコードのビジュアライザが名前を隠された状態で用意されていて、上中位の人たちの結果を同時にプロジェクタで見せられました(テストケースは全部で3つ) あれは良い演出だったと思います。まぁ名前は隠されていたんですけど、結構なチームが自分のがどれか分かったんじゃないかな~とは思っています。自分のチーム特有の置き方ってあったでしょうし。

この段階で自分のチームの解法らしきビジュアライザが1段を出していて、大喜びでした。とりあえず失格が無くなったっぽいのが一番うれしかったですね。

その後チーム名が開示され、やっぱり自分のチームで相方とガッツポーズしてました。

その後はテストケース2,3についてトップ3のチームの発表されたんですが、全部のテストケースにおいて自分のチームが1位を取り優勝が確定、この時もうほんと\パンッ/ヨッシャアアアアアアアアwww(高い声で)キタァwwwwwwウワァヤッタアアアwwwwwwwwwを地でやる勢いで喜びました。ほんとに。

 

その後インタビューというか全員の前で何か言ってくださいとか言われたんですけど、当然何も考えちゃいないしとりあえず思ったことを言いました。ら、やれ自分は競技全然やってないとかAOJ全然解いてないとか、かなりハラスメントなことを色々と言ってしまい後日twitterで見た競プロの人たちのぐぬぬな声をごめんなさいの気持ちで見てました。ごめんなさい。

 

この後確か食事会と交流会?みたいなのがあり、ここで初めて多くの初対面の競技プログラミングの人とコミュニケーションを取りました。これまで全然そういう関わりを持ったことがなかったので貴重な嬉しい時間でした。

そしてここで今大会の(自分の)サブイベント、手品を披露するタイミングが訪れ、とりあえず持ってきていたトランプとかコインでチロッと手品しました。

プログラミングに関連付けた手品とか考えてたんですけど(シャッフルしたらソートされるとか)、いざやると完全に忘れてしまって結局いつもの手品をしました。とりあえず失敗なく、結構受けが良かったのでまぁ良し良しって感じでした。

 

こんな感じで人生で初めてのまともに参加した大会は幕を下ろしました。

 

 

振り返ってみると自分のコーディング速度の遅さは致命的でした...良いコードうんぬん以前の問題で。

それと、競プロの方々はvimとかemacsとかをバリバリに使ってるイメージだったんですが、そんなことはないようで結構意外でした。端末上での操作が多かった分、vimだとかemacsだとかの環境慣れの差はあったのかなぁと思いました。

 

今回のsuper con2014で思ったことは3つ、

タイピング速度は直にコーディング能力に反映される
vim(emacs)は使えると何かと良い

そして、

super conは競技とは完全に別物

の3つです。

今年出場した1~2年の方は、また来年も出れる可能性があると思います。

競技プロ勢ではない(とは言えある程度プログラミングに対する知識があってパズル好きみたいな)後輩を一人連れて行き、そいつの、全く計算量とかコーディングのしやすさを無視した意見とかを聞くのもありかもしれないですね。

 

なんにせよ、参加した皆さんお疲れ様でした!!PCKで会おう!とか言って普通に落ちちゃったので会う機会があるか謎ですが、今度またどこかで!