プログラミング勝負! Google Code Jam 2011
2011年4月22日金曜日
[日本で開催予定の Google Code Jam Japan の延期についてはこちらの記事でお伝えした通りですが、 全世界で開催される Google Code Jam 2011 は予定通り開催されます。本記事はその Google Code Jam 2011 について、ソフトウェアエンジニアの稲葉 一浩が投稿してくれました。 -山崎]
あなたは、板を並べて、丁度ぴったり 100 億メートルの、長い長い塀を作ろうと思い立ちました。馴染みの工芸店では、233 メートル、456 メートル、あるいは 787 メートルの板なら、注文すれば何枚でも売ってくれます。板をうまく組み合わせて、最小の枚数でぴったり 100 億メートルを作るには何枚の板を買えばよいでしょうか?
注意してください。作りたい塀は、とても長いのです。膨大な枚数が必要ですが、1 枚も間違わず、正確に計算してくださいね!
Google では 2003 年から毎年、世界中のプログラマを対象にしたプログラミングコンテスト Google Code Jam を開催しています。昨年は、12,000 人のプログラマが、125 の国から参加し、総計 53 のプログラミング言語を使って競い合いました。日本からは、rng..58 さんと iwi さんの 2 人が決勝に進出し、7 位と 9 位と、好成績を残しました。
そして、今年ももちろん、Google Code Jam 2011 (世界大会) を開催します。
まずは、日本時間で 5 月 7 日の午前 8 時から、24 時間の予選ラウンドが行われます(これは、24 時間の間の好きなタイミングに数問の問題を解いていただくものです)。その後、5 月から 6 月にかけての週末に数時間のオンラインラウンドが 3 回開かれ、すべてを好成績で突破すると、いよいよ 7 月 29 日、決勝ラウンドです。今年の決勝ラウンドは、Google の東京オフィスが舞台となります。世界のトッププログラマと直接会って戦えるチャンス。ぜひ、腕を振るって挑戦してください。参加登録は、こちら Google Code Jam のサイトで行えます。締め切りは、予選ラウンドの終わりまでとなっています。
ところで、はじめに引用した板の問題は 2010 年の決勝直前のラウンドで出された難問です。こんな風に、巨大なデータが来ても動じないアルゴリズムを、バグ無く、高速に実装する力が試される問題が次々と出題されるのが、このコンテストです。実は、中でも、この長い板の話は私のお気に入りの一問なのです:)。この問題は、データの数値が小さい時は、多くのアルゴリズムの教科書でも見かける「よくある」問題なのですが、データが大きくなると、別の工夫が必要になってきます。そして、データの巨大さがある一線を越えると、それを逆手にとったまったく違う発想の巧い解決が可能になるのです。ぜひぜひ、考えてみてください。他にも、過去の問題はすべて公開しています。練習がてら、解いて楽しんでいただければと思います。
それでは、みなさまの挑戦をお待ちしています!
ご参考:Google 公式ブログの記事(英語)