日本選手団 団長 劉鴻志
日本代表選手 | |||
金メダル | 井上卓哉 | 開成高等学校3年 | |
金メダル | 髙谷悠太 | 開成高等学校2年 | 銀メダル | 川﨑理玖 | 筑波大学附属駒場高等学校2年 |
銀メダル | 増田隆宏 | 筑波大学附属駒場高等学校3年 | |
日本選手団役員 | |||
団長 | 劉鴻志 | 東京大学理学部情報科学科3年(IOI 2012, IOI 2013 選手) | |
副団長 | 三谷庸 | 東京大学理学部情報科学科3年(IOI 2013 選手) | |
随行員 | 熊﨑剛生 | 東京大学理学部情報科学科3年(IOI 2013 選手) |
IOI は個人戦であり公式データとしての国別順位は存在しない.公表された成績に基づいて算出したところ,メダル獲得数による日本の国別順位は 4 位である.総得点による日本の国別順位も 4 位である.
競技 1 日目 | 分子の検出 (Detecting Molecules) |
ジェットコースター (Roller Coaster Railroad) | |
近道 (Shortcut) | |
競技 2 日目 | お絵かきパズル (Paint By Numbers) |
バグの解読 (Unscrambling a Messy Bug) | |
宇宙人 (Aliens) |
いずれも数理的思考力が問われる良問である.各課題はいくつかの小課題に分割されている.小課題の中には,単純な実装で得点が得られるものから,高度なアルゴリズムを実装しないと得点が得られないものまで含まれている.従って 1 つの課題を丸ごと落として 0 点になってしまう可能性は少ないが,満点を取るのは難しい.
(1) 競技規則の変更 : IOI の競技規則は毎年少しずつ改訂されている.IOI 2016 における大きな変更点は以下に挙げるものである.
・以前は,ある問題に対する得点が,その問題に対する提出の得点の最大値であった.IOI 2016 では,問題の小課題に対する得点が,その小課題に対するすべての提出の得点の最大値として定義され,問題に対する得点はすべての小課題に対する得点の合計に変更された.
今までの採点では,例えば小課題ごとに別の解法を適用するといった場合,無関係の解法を 1 つのプログラムの中に埋め込むような形となっていた.新しい採点では,このような場合ではそれぞれの解法に対し別のプログラムを書き,提出することで同等の点数が得られるようになった.この変更によって,無関係な解法の間で変数名が衝突してしまうといったことを考慮する煩わしさが解消された.
また,以下のルールの追加が提案されたが,GA meeting の結果却下された.
・選手は提出に対するフィードバックを観察することで,入力の内容を解析し,採点に使われるテストデータにのみ正答するプログラムを提出してはいけない.
この提案は問題に対する考察・数理的思考を行うことなく,採点用データとそれに対する正解のみを知ることで得点することを防ぐためのものであったが,以下の意見もあり却下された.
・何が不正に当たるのか判断が難しい.例えば,解法の中でいくつかの場合分けをしていたが,そのうちのあるケースに該当するテストデータが存在しないことが提出により偶然判明した場合,そのケースに対する実装を放棄することは正当なのか?正当でないとすると,得点が改善しない上フィードバックも変わらない実装を選手は行わなければならない.正当だとすると,不正との違いを明確に定義するのは難しい.
・IOI 2013 で出題された Artclass という問題は,テストデータの特徴を解析し,フィードバックにより得点の上下を見ながら満点を獲得していく問題だった.コンピュータ科学においては入力の特徴の把握も重要であり,このような解法は不正とみなされるべきではない.
(2) 競技実施方式 : 去年に引き続き,IOI 2016 で出題された課題の形式は,与えられたデータを処理する関数(プロシージャ)を実装したソースファイルを提出する方式 (プロシージャ方式) である.出力ファイルのみを提出するような特殊な形式の問題は,今年は出題されなかった.
提出されたソースファイルは競技システム上ですぐにコンパイル・実行される.競技参加者にフィードバックが返され,自分の得点を知ることができる (現在の競技規則では,すべての提出に対して完全なフィードバックがあることが明記されている).満点でなかった場合は,どの小課題で失点したかを知ることができる.
競技の途中経過はスコアボードとしてリアルタイムに全世界に公開された.日本から観戦した人も多くいたようである.ただし,先述のように競技時間中はスコアボードは選手には公開されない.選手が競技時間中に知ることができるのは,自分の得点だけである.
去年と同様に,プログラム中で実装すべき関数の仕様を言語ごとに説明する「実装の詳細」節は問題文から省かれた.一方で,今年から「実装上の注意(Implementation notice)」が配布され,その中で配列・8 byte 整数の問題文中での表現と,それが各言語での構文にどう対応するのかが明記された.このため,問題文を簡潔にとどめつつ,より実装すべきことがはっきり定義できる表現になったと思われる.
(3) 競技システム : 競技時間中,選手にはノート PC が 1 人 1 台与えられた.選手の PC には開発環境と,競技システムにアクセスするためのウェブブラウザがインストールされている.また,席を間違えないよう各PCの壁紙画像に各選手の顔写真が埋め込まれた.
競技システムは,ここ数年の IOI とは違い,PCMS が用いられた.これは日本が本選・トレーニング合宿で用いている CMS とは異なるものであるが,完成されたシステムで両日通じ提出したプログラムの実行とそのフィードバックに関するトラブルはほとんどなかった.また,CMS との違いとして,全てのテストケースに対して提出したプログラムを実行するのではなく,不正解となったケースがあると以後のテストケースに対しては実行しない仕様となっていた.これにはプログラムの実行にかかる時間が削減できるメリットがある.インターフェースは簡潔で,その使い方については選手が自ずと理解できたようである.
(4) 翻訳 : 競技日の前日の夜には副団長・随行員により問題文の翻訳が行われた.
今年の翻訳システムは Markdown 形式のもので,すべての編集がサーバー上に保存され,システム上から印刷を要求できるなど,使いやすいものであった.1 日目には翻訳システムの仕様からサーバーが応答しない問題で合計 1 時間ほど待たされてしまったが,2 日目は修正されており,トラブルなく翻訳を終えることができた.日本語フォントについては,1 日目は去年同様若干の違和感を感じる程度であったが,2 日目には若干の違和感すら改善されとても自然なものになっていた.技術委員の努力には敬意を払いたい.