当チャンネルの読者のなかには「競技プログラミング」に興味を持っている、もしくは参加したことがあるという方もいるかもしれない。競技プログラミングは、与えられたプログラミング問題を解く速さと正確さを競うもの。一般的に、アルゴリズムに関する問題が数問出題され、それを制限時間内に解くという形式になっており、参加者はアルゴリズムの知識や数学的思考力、コードの実装力などが試される。

7月18日に東京・歌舞伎座タワーのドワンゴセミナールームにて開催されたイベント「TCO15 in Tokyo」では、「Single Round Match(SRM)」と呼ばれる世界的な競技プログラミングの2次予選「SRM Round 2C(Round 2C)」が行われた。

TCO15 in Tokyoは、アピリオが運営するクラウドソーシングコミュニティ「topcoder」のメンバーを対象に開催される世界規模のプログラミングトーナメント「TCO(topcoder open)15」の一環として行われたもので、今回が日本初開催となる。なお今回は、Round 2C参加者以外の一般参加者も「SRM Parallel」として同じ問題に挑戦できるようになっていた。

開始時刻の15時になると、特に合図がかかることもなく静かにRound 2Cがスタート。会場に集まった77名の参加者の打鍵音のみがセミナールームに響きわたるなか、ノート上にメモを書きながらアルゴリズムを考えたり、コードを書いたりと、参加者たちは競技プログラミングに黙々と取り組む。

競技プログラミング中の会場の様子

ノートにメモをとりながらアルゴリズムを考える参加者

topcoderでは、「Easy」「Medium」「Hard」の3問が出題され、まず「Coding Phase」の75分間でその解法を考え、実際にコーディングを行う。その後、15分間で同じ対戦部屋のほかの選手が提出したプログラムのバグを指摘する「Challenge Phase」に移るといった流れになっている。Challenge Phaseが終了すると、参加者はガッツポーズをしたり、ため息をついたり、問題について参加者同士で振り返ったりと、それまでの緊張感が一気に和らいだ雰囲気となった。

Round 2C終了後には、「レッドコーダー」と呼ばれるtopcoder内の成績優秀者のなかでも上位の成績を収めた日本に6人しかいない「ターゲット」の称号を持つプログラマである国立情報学研究所 特任助教 秋葉拓哉氏と東京大学大学院情報理工学系研究科 修士課程在籍の副島真氏がその場で問題解説を行った。

国立情報学研究所 特任助教 秋葉拓哉氏

東京大学大学院情報理工学系研究科 副島真氏

Round 2C終了後の会場の様子

秋葉氏の「難しかったと思う人ー?」という質問に挙手する参加者たち

「Easy」のカードゲームに関する問題は秋葉氏が解説

一番難易度の高い「Hard」では、ロボットがグリッド平面のセルを黒く塗りつぶしながらある規則にしたがって進むとき、一定時間後の任意のグリッドの色および、黒く塗りつぶされているグリッドの数を求める問題が出題された(※問題はニコニコ生放送のページに掲載されている)。レベルの高い問題だけあって、副島氏によると正解した人はRound 2Cの参加者にはいなかったとのこと(Parallelには正解者が2名ほどいたという)。

問題中のロボットの軌跡はフラクタル構造になっている

topcoderの問題作成を担当する副島氏はホワイトボードを使用しながら解説した

Round 2Cへはオンラインでの参加者も含めると合計580名が参加。このうち、成績上位40名が次のラウンドへ進出し、世界トップの24名が集まる米国での決勝ラウンドを目指していく。

TCO15 in Tokyoではハッカソンも行われ、アピリオおよび協賛の楽天、リクルート住まいカンパニーからそれぞれ優秀者に賞金が送られた。写真は、「AtCoder」の提出をリアルタイムにクロールしユーザーの競技プログラミングの学習に役立てるアプリを開発し、アピリオ賞を受賞した参加者

本稿で紹介したtopcoder以外にも、「Atcoder」や「Google Code Jam」など、現在は競技プログラミングに関するさまざまなサービスがある。興味のある方はぜひ挑戦されてみてはいかがだろうか。