はむ吉(のんびり)の練習ノート

プログラミングとことばに関する話題を中心に,思いついたこと,試してみたこと,学んだことを,覚え書きを兼ねてまとめます.その際に役立った,技術書,参考書,辞書,機器などの紹介も行います.

DISCO presents ディスカバリーチャンネルコードコンテスト 2017 (DDCC2017) 本選参加記

先日,標記コンテストの予選がオンラインで10/7に,本選がオンサイト(東京・大森)で11/3にそれぞれ行われました.思いがけないことに,私は予選に通過することができ,本選に進出することができました.オンサイトのプログラミングコンテストに参加するのはこれが初めてでした.この記事では,本選前後のできごとをまとめます.

本選前々日

私は本選前日に通い先から直接東京に向かい,一泊する予定でした*1.そのため,この日は早く帰宅したかったのですが,幹線道路における多重事故の影響を受けて,数十分もバスが遅れた上,寿司詰めになってしまいました.帰宅し,眠い目をこすりながら支度を終え,ノートPCや「蟻本」でリュックサックを膨れ上がらせた頃には,日付が変わっていました.

本選前日

作業を早めに切り上げ,新幹線駅へ向かうバスに乗りました.しかし,なんということでしょう.このバスも渋滞に巻き込まれて遅れ気味の上,途中から寿司詰めでした.寿司の予行演習だったのでしょうか.新幹線の発車時刻まであまり余裕がなかったので,途中の停留所にて,20分に1本しかない在来線に乗り換えました.今度は早く着きすぎ,待合室もいっぱいで路頭に迷いましたが,乗り遅れなかっただけましでした.夕食の弁当を買いに新幹線コンコースの売店を訪ねましたが,1300円余りもする近江牛弁当しか残っておらず,やむなくそれを買いました.

新幹線に乗り込み,座席に着くやいなや,その弁当を食べてしまいました.そのとき感じたのは,最前列2人席の通路側(D席)も善し悪しだと言うことでした.コンセントが利用でき,気兼ねせず席を立て,机や足元が広いのはいいのですが,腕を少し広げると自動ドアが反応することでした.ノートPCを広げてライブラリの整備でもと思っていたのですが,結局無為に過ごしました.

そうこうしているうちに,品川駅に着きました.高輪口を出て,京急の駅に向かいました.種別ごとに列形成の場所が明示されているのは,なるほど合理的だと思いました.当初エアポート急行に乗ろうとしたのですが,多客につき積み残され,あきらめて各駅停車を利用しました.


品川駅から十数分ほど列車に揺られ,会場の最寄りである大森海岸駅に辿りつきました.東京都内にあるにもかかわらず,優等列車があまり停まらないうえ,夜遅かったからか,思いのほか静かでした.目と鼻の先にある複合商業施設で買い出しを済ませ,そのまた近くのホテルに宿泊しました.素泊まりの予定でしたが,朝食を追加しました.

本選当日

出発まで


前夜にアラームを三重*2にかけて就寝したのですが,結局6時頃に目覚め,6:40ごろまでまどろんでいました.身支度を済ませ,朝食をとるべくホテルのレストランに向かいました.和食と洋食が選べたのですが,関東風の味付けが口に合うかわからなかったので,後者を選びました.少々味気ない感じがしましたが,許容範囲内でした.Twitterの情報から,受付開始の9時より前の入場を予定している方々が思いのほか多いことが推測されました.ノートPCの電源には不安があったので,電源席を確保すべく早々にチェックアウトしました.

会場到着からコンテスト開始まで

会場であるディスコ本社には,8:45頃に到着しました.すでに10名弱の参加者の方々が集まっておられました.9時前には,すでに数十名が列をなすほどとなりました.そこで私が感じたのは,イメージしていたよりも,若く見える方が多いということでした.今回のコンテストでは参加者の半数がB3やM1であることから,当然なのかもしれませんが.そうこうしているうちに受付開始となり,名札とTシャツを受け取り会場へ進みました.

会場に着きコンテストの用意をしましたが,手元のノートPCに二つの問題が発生しました.一つは画面の輝度を調節できないこと,もう一つは電源に接続されているにもかかわらず充電が始まらない(おまけに残量表示もおかしい)ことでした.前者はディスプレイドライバの入れ替えにより解決しましたが,後者はどうしようもありませんでした.おそらくミニACアダプタが原因だったのでしょう.途中で画面が暗転しないことを願いつつ,コンテストに臨みました.

開始までは,近隣の席の方々と会話するなどして過ごしました.私の会話能力が余りに低いためか,留学生と間違えられる一幕もありましたが.

コンテスト

結果は,A-Eの5問のうち,A問題とB問題を解き2完113位*3でした.

まずはA問題に取り組みました.これまでの出題傾向から幾何の問題が出るのは予想していたものの,いきなり出題され面食らいました.しばらく図を見てフリーズするものの,制約からすべての小正方形を見る全探索が可能であることに気づき,計算用紙に図式をグラフペンシルで書き殴りつつ正答コードを得ることができました.

次はB問題でした.皆目見当がつかないので,とりあえずGCDのLCMをとってみたところ入出力例に合いました.それをそのまま提出したところ,なんとACを得ました.あっけにとられました.

C問題にも取り組みましたが,閉路の列挙を行うアルゴリズムに関する論文をながめたり,入出力例を図示したりしたものの,解法を思いつきませんでした.「蟻本」も手元にありましたが,利用が許可されていたのか不明だったので,ほとんど読みませんでした.実際のところ,使ってもよかったのでしょうか.ほかの問題も読みはしたものの,やはりからっきしでした.

なお,今回はPythonを使用しました.Haskellも使ってみようとしましたが,さすがに本番で使うのはまだアレではないかと思い,取りやめました.

昼食

昼食は特別ビュッフェでした.おいしくいただきました.同席になったお二人が,偶然にも私と同じ水色コーダでした.なかなか越えられない水色と青色の境界や,理系学部特有の遠隔地キャンパスについて盛り上がりました.

特別対談

貴重なお話を伺いましたが,特に印象に残ったのは,山本さんの「マルチなチャンネルを持つことが大事」ということでした.私は非情報系を専門としていますが,これと競技プログラミングなどの情報系技術等をうまく組み合わせ,何らかの新しい方向性を作り出したいと思いました.

ディスコ会社紹介,社内ツアー

自分でやりたい仕事を選んでいく制度や,充実した福利厚生施設等が印象に残りました.また,A問題に登場したウェーハを削る実際の装置を,実際に見せていただきました.半導体を主として扱うメーカとは認識していましたが,今回の見学を通じて,ディスコさんでの仕事というものに対する実感を得られました.

表彰式,懇親会

まずは入賞者の方々の表彰が行われました.忌憚のなきコメントが印象的で,思わず笑顔になってしまいました.

その後,懇親会となり,競技プログラミングでは定番のご馳走である寿司を囲んで交流しました.コンテストの問題の感想や,競技プログラミングにおけるPython勢の辛さなどについてお話ししました.そのとき初めて,「WA」が実際に発音されるのを耳にしました.ささいなことなのですが,普段は文字でしか見ない競技プログラミング用語を,こうやって聞くのは,なんだか不思議な感覚でした.また,非情報系で競技プログラミングに取り組んでいるのは珍しいようで,お褒めや励ましの言葉をいただきました.

最後に記念撮影をして解散しました.

帰路


昼食でも懇親会でもそこそこいただいたのですが,終わってみると力が抜けたのか不意に空腹となったので,軽い夕食を食べて帰ることにしました.昨夜訪れたのと同じ商業施設のフードコートで,拉麺と炒飯に飲み物がついたセットを食べました.ついでにお土産も買いました.

品川駅までの移動に,今度はJR大森駅を利用しようとも考えていたのですが,結局は京浜東北線の混雑を恐れ,往路と同じ京急線を利用しました.10分に1本の列車に乗るべく小走りで大森海岸駅に向かったり,京急線からJR線への乗り換え改札の使い方がわからず駅員さんに尋ねたりしたものの,なんとか新幹線の発車時刻までにJR品川駅に着きました.


帰路の新幹線ではこのブログ記事を書いたり,初めてのシンカンセンスゴクカタイアイスを食べたりしました.なかなか濃厚なアイスでした.

感想

コンテストが始まるやいなやそこら中から聞こえてくる打鍵音や筆記音,ネットワーク越しではなくface to faceでの感想戦,そして何よりも,皆さんからひしひしと伝わってくる,無邪気さ,ひたむきさ,そして喜びが,私にとっては新鮮で,はっとさせられるものでした.またこのような集まりに参加させていただきたいものです.ありがとうございました.

*1:始発を利用すれば宿泊せず当日に移動することもできたのですが,5時台に家を出るのは辛すぎるので,自腹で前泊することにしました

*2:備え付けの時計,持参した置き時計,スマートフォンのアラーム機能

*3:順位は後の表彰式後に掲示されました