名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

ICFPC振り返り

個人的な感想。運良く会社の人たちに混ぜてもらえたので感謝感謝。

ICFPC(ICFP-PC)とは

大会のURL

https://icfpcontest2018.github.io/

なんかやべー大会。72時間でプロコンのマラソンの難しいやつを解く。

lightning(最初の24時間)とfull(24時間経過後から48時間)が存在し、それぞれの1位、2位のチームに称号が与えられる大会。最もすごい言語だと1年間名乗る権利があるとかないとか。

普通のプロコンと違うところは多々あって

  • 提出形式が特殊
  • 一人でやるには計算機も下準備もいろいろ大変なくらい多いルール
  • コンテスト終盤になると順位表がフリーズ
  • Fullになると無茶ぶりのようなルール追加がなされて、Lightningとは…………!!?になる

などなど。雰囲気はツイッターで 「ICFPC」を調べると無数に難しい!とか、諸々見れます。

もし参加される方がいたら、間違いなくチームでやって手分けして行くのがおすすめですかね。

初日

  • 足が攣って本当に動けなかった
  • 問題文を集合場所に行くまでに軽く目を通しておく
    • 比較的わかりやすい感じ…
  • ついてからGoogle翻訳通したものを読む(英語は苦手なのでタスカル)
  • バイナリコンバーターを作ってた
  • なんか変換してもうまく行かないのでバイナリを解析
  • 調子が悪かったので家に帰る。家に帰ってからチームがギリギリで提出を決めるミラクルを見る。

2日目

  • 起きたら昼近かった。足の痛みが軽減。
  • 追加ルールを移動しながら読む。よくわからない。
  • ついてから引き続き追加ルールを読む。なんかみんな黙々とやってる。
  • スコアリングして評価するものが必要という話になり、AIではなくそっちを作る
  • スコアリングは公式ページのものを評価器として使おうとするも、JavaScriptが暗号化されており冷える
  • Seleniumで叩けないか試行錯誤

3日目

  • Seleniumで叩く部分が完成し、デフォルトのデータを回し始める
  • デフォルトデータのスコアを集計する何かを書く
  • デフォルトスコア回してたら終わらないことに気がつく(並列化しておらず、僕の手物だけでやってた、聞くところによると20並列くらいでやっていたチームもあるらしい…)
  • スタンディングのやつだけでも評価できるようにする
  • なんか疲れて朝の何処かで寝る
  • 昼に起きてスコア計算機を再開して夕方頃に完成したっぽいが…
    • 記憶が曖昧
  • 残りはサブミットまでバグ取りとか、手順の監視とか、諸々
  • 気がついたら提出完了して終わってた

学んだこととか

  • バイナリ出力とバイナリの見方(今回はemacsをこれだけの為に入れて見ていた)
  • Seleniumで頑張ってJavaScriptの出力結果を取る(技術的には、これサクッと学べたのが一番大きかった)
  • VS Code の共有機能とか
  • 隣で見ていてAWSスゴーイってなってた
    • スペック低めのパソコン複数台なら安く収まるところもある
    • S3やすい

感想

ほんと疲れたし、なんかいろいろありましたが、楽しかったです。

これだけずっと考え続けるのって数年ぶりで最後の方はわくわくだけで何とかやってました。食事してるのも勿体無いくらい…。

技術的に及ばないところもあり、迷惑をかけてしまったこともありますが、色々なことが学べたので、他のところでフィードバックできるといいなーと思います。