19 Aug 2009

Google Code Jam 2009について調べた

今月10日より今年のGoogle Code Jam 2009の参加受付が開始されました。Google Code Jamとはgoogle主催のプログラミングコンテストで、世界中から参加者が集まります。決勝はマウンテンビューのGoogle本社で行われ、上位者には賞金が贈られます。また過去に成績が優秀だった人で、Googleに就職した人もいるそうです。

Google Code Jam 2009

僕も早速参加登録しました。トップコーダーの自分の成績を考慮すると、上位3000人が参加できるラウンド2まではなんとかいきたいです。ラウンド3までいくとTシャツがもらえるのですが、トップコーダーで黄色くらいないと厳しそうです。余談ですがに2006年の優勝者はあのPetrでした。

参加するのは初めてなので、いろいろ調べたことをまとめておきます。ソースはここです。

Google Code Jam 2009

ルール

参加資格
  • 13歳以上
  • Googleの社員またはその家族でない
  • イランや北朝鮮など、国交のない国以外

つまり、学生でも社会人でも出られます。

環境・言語

どんな言語でも可。同様にどんな環境(エディタ、コンパイラ、インタプリタ)でも可。

問題形式・解答方法

一回のコンテストにつき、3~6問の問題が出される。それぞれの問題は、問題文とテストケースのセットで構成されている。一つのテストケースは小さいインプットと大きいインプットの二つから成り立っている。

コードが完成したら、大小のインプットファイルをダウンロードし、それを入力とし実行する。実行後、出力をサブミットする。正しい計算結果を返すだけでなく、実行時間の制約もあり、ダウンロードした時点から、小さいインプットは4分、大きいインプットは8分以内に実行できなければならない。

コンテスト終了時にソースコードをアップロードする。形式はプレーンテキストかzipで、サイズは100kb以内。全ての参加者のアップロードされたコードは見ることができる。

採点方法

点数とペナルティタイムから順位が決まる。点数は、各問題のインプットごとに定められている。同点の場合、ペナルティタイムが少ない方が上位となる。ペナルティタイムはコンテスト開始時から時間が経てば立つほど大きくなる。

[17m10s] wrong submission for A-small
[17m35s] wrong submission for A-small
[18m15s] correct submission for A-small (10 points)
[29m30s] wrong submission for B-small
[30m59s] correct submission for C-small (30 points)
[45m11s] correct submission for A-large (15 points)
then your score will be 55, with 53m11s of penalty time (45m11s + 2*4m)

ということは、wrong submission は何度やっても時間のペナルティはつかないってことですかね?

過去問の解き方

なにはともあれ、過去問を解いてみるのが一番わかりやすいと思います。

Google Code Jam

こちらから参加登録後、右側のprevious contestsから去年の問題を解くことができます。インタフェースも本番と同じものと思われるので、問題の選び方、解答のサブミットの仕方など、使い方をひととおり見ておくのがいいと思います。

スケジュール

Registration

9/3 8:00 ~ 9/4 8:00(JST)までに参加登録を行います。このときに使用言語と、ラウンド1の希望日程も登録します。登録内容はQualification Round終了前まで可能です。

Qualification Round

9/3 8:00 (JST) から24時間Qualification Roundが開催されます。参加者は24時間中いつでも参加でき、問題を解きます。スコアは関係なく、解ければOKです。次のステージに進める人数に制限はありません。

Online Round 1

Online Round 1 は9月12~13日の間に計3回開催され、参加者は参加するラウンドを選びます。各回上位1000人、合計3000人が次のラウンドへ進めます。一回目のサブラウンドで上位1000人にはいれなかった場合は、それ以降のサブラウンドでもう一度チャンスが与えられます。

Online Rounds 2 and 3

ラウンド2は9月26日に開催されます。上位500名がラウンド3へ進めます。

ラウンド3は10月10日です。上位25人がファイナルへ進めます。従来このラウンドは、各地域のグーグルでのオンサイトだったようですが、今年はオンラインです。確かに、グーグル社屋が近くにない地域のことを考えると、この方が公平かもしれません。TopCoderやGSoCをみていても、アメリカやインド、中国などはもちろんたくさん参加者がいるんですが、むしろ東欧やその他のG8とかには入っていない小さな国々からの参加者が、わりあい多くいてがんばっている印象があります。

Onsite Final Round

マウンテンビューのグーグル本社での、オンサイトファイナルです。11月13日に開催されます。

賞金

ラウンド3に参加する上位500人にはTシャツがプレゼントされます。

ファイナリスト25人には、マウンテンビューへの旅費と以下の賞金が贈られます。

Competitor(s)     Prize
1st Place         $5,000
2nd Place         $2,000
3rd Place         $1,000
4th - 25th Place  $100

googleカレンダー

Google.com

公式twitterアカウントが、これがgcjのカレンダーだとつぶやいていたんですが、いまいち使い方がわかりません…

Twitter / Google Code Jam: If you’d like to add the 2 ...

コミュニティ

Googleグループ、メーリングリスト

アナウンスメントオンリーのグループ

Google Code Jam Announcements | Google Groups

参加者同士のディスカッショングループ

google-codejam | Google Groups


IRC

freenodeに#gcjという公式チャンネルがあります。


Twitter

公式Twitterアカウント

Google Code Jam (googlecodejam) on Twitter

公式のハッシュタグは#googlecodejamです。ちょっと長い。

Twitter / Search - #googlecodejam