2012年4月30日月曜日

CodeJamってナニ?

CodeJam… 正確には Google Code Jam は、Googleが主催しているプログラミングコンテストです。

  • Web上で問題が出題され、それを解くプログラムを作ります。言語は何でもかまいません。*1
  • 問題に対して2種類の入力データがあります。データの範囲が小さくて難易度が低めのSmallと、データ範囲が大きくて難しいLargeです。
  • 入力データをダウンロードして、自分で作ったプログラムにかけて結果(回答)を出力します。その結果をサーバにアップロードすることで、サーバで正誤判定が行われます。
これがCodeJamの基本ルールです。
Practice and Learn のページ に過去問が練習モードで掲載されているので、お好みの問題を楽しむことができます(((o(*゚▽゚*)o)))

本戦にはコンテスト期間が決まっていて、練習モードでは割愛されているルールがあります。
  • 世界中で同時にコンテストが始まります。UTCで表示された日時は日本時間にすると +9:00 なのでスケジュール調整に注意しましょう…
  • 問題ごとにスコアが決まっており、正しい回答を提出するとそのスコアを獲得します。コンテスト期間中に獲得したスコアが多い順にランキングされます。同じスコアの場合は最後に正しい回答を提出した時間が早い順となります。(後述のペナルティを加算した時間で判定されます)
  • Small input は、入力データをダウンロードしてから4分以内に回答を提出する必要があります。回答を提出するとすぐに正誤判定され、間違えたら何度でも(正解するまで)再提出することができます。4分の制限時間に間に合わなかったり、間違った回答を提出すると、1回につき4分のペナルティが課されます。(正しい回答を提出した時時に 4分×間違えた回数 を加算して順位判定される)*2
  • Small input を正解するまで Large input には挑戦できません。
  • Large input は同様に8分の制限時間があります。制限時間内であれば何度でも再提出することができます。こちらはコンテストが終了するまで正誤判定は「おあずけ」で、コンテスト終了と同時に採点されて最終順位が確定します。(回答を提出した時点で暫定スコアが入りますが、正解していない場合はその分が無くなるので順位が下がります)
  • 回答提出時に、その出力を得るのに使ったプログラムのソースコードを提出する必要があります。コンテスト終了後、正しい回答と一緒に提出されたソースコードは公開されます。正しいソースコードが提出されていない場合、失格になる(その問題で獲得したスコアを失う)ことがあります。
  • 優秀賞(ランキング上位)の特典はコンテストによって異なります。(本戦Final Round 1位で $10,000 USD とか、Round 2 上位1000位以内で Google Tシャツとか)
コンテストごとに細かいルールが異なる場合がありますが、Google Code Jam Japan 2011のルール が日本語で詳細に書かれているので参考にしてください。


*1:言語は何でもOKですが、コンパイラやインタプリタを無償で入手できる必要があります。Visual Studio Express があるので Visual Studio でもOKらしいです。
*2:間違った回答を提出したり時間切れになったSmall問題をコンテスト期間中に最後まで答えられなかった場合、その問題についてはペナルティは課されません。

0 件のコメント:

コメントを投稿