Google Code Jam 2013 予選

今年もプログラミングコンテスト Google Code Jam に参加しています。この週末は 25 時間の 予選ラウンド がありました。

成績と提出コードは Scoreboard で見ることができます。また自分の作業リポジトリは各ラウンド終了後に GitHub にて公開しています。

Problem A & B

特に難しいところはなく、みな Ruby で書いて提出。しかしこのレベルの問題にあいかわらず 30 分とか 1 時間とかかかってるのはまずい。

Problem C

Small を Ruby で Large 1 を C++ で書いて提出。ここまでなら 64bit に収まる桁数だし力技でも解決できましたが Large 2 はさすがに無理。

数字の列を見てると法則っぽいものが見えるので、きっとなんかうまい生成方法があるのでしょうがそこまで及ばず。 解説 を読んで勉強します…。

Problem D

Small は Ruby で提出。最初のトライでは探索が終わらず、最初に解けるかどうかのチェックを追加してやり直しました。

Large は C++ で書きなおしてトライしたけどあえなく時間切れ。敗因は実用的な枝刈り関数が考案できなかったことに尽きます。たいして難しくなかったので後で答えを知るとたいへんにくやしい。

結果と感想

ということで、 去年の予選 では満点が取れたのですが、今年は 135/250 (1004位) と月並みな結果で終わりました。 25 時間もあったのにこの成績はまずい。

いま思えば、Code Jam やるなら速いマシンいるよなーということで開始 1 時間前に Core i7 の ゲームマシン に Ubuntu 12.10 のインストールを始めてしまったのがよくなかった気がします。コンテスト始まってもインストールが終わらなかったし、その後もデスクトップの環境設定ばかりしていて気合いが入りませんでした。

最大の課題であるスピードについては Problem A B を見ればわかるように去年より特に進歩してません。ラウンド 1 以降は今年も苦戦が予想されます。

プログラミング環境整備はできたので、次回ラウンド 1A (4/27(土) 10:00-12:20) は本気を出して取り組みたいものです。ああでも Ubuntu 13.04 が 4/25 に出るんだっけか…。

2013/04/14 21:14:00 JST