Google Developer Day 2010 japan(DevQuiz編) 2010年9月30日

ネットスクエアの佐藤です

9/28 東京国際フォーラムで開催された Google Developer Day 2010 japan に行ってきました

まず、このGoogle Developer Day 2010 japan(長いので以後 GDD2010jp と記述します)に参加する為には条件がありました。
その条件とは「DevQuizにチャレンジし、一定の得点を得る事」です
今回は、GDD2010jpに参加する為のDevQuizがどんな物だったかについて書きたいと思います

GDD2010jpへの参加は3つの枠に分けられていました
・Super Hackers枠(定員の40%)
・Top Favorites枠(定員の40%)
・Next Generation枠(定員の20%)

そして、DevQuizの構成は次の通りです
ウォームアップ ・Google のプロダクトに関する質問、三択式。調べれば簡単に分かる問題 ラウンド1 ・ウォームアップより少し難易度の高い問題 ラウンド2 ・解答としてプログラミングコードを提出して頂く問題が中心。 開発者には簡単で開発者以外には難しい問題 ラウンド3 ・Super Hackers 問題 アルゴリズムを問うものが中心。難易度は高く、純粋に開発者向けの問題 ・Top Favorites 問題 ユーザに高く評価されるアプリケーションを作成されているかどうかや、コミュニティ活動、貢献度を測る問題 ・エッセイ エッセイを書く問題
このQuizをそれぞれの枠に入選する為に選択してチャレンジします
(DevQuizのページを転記し、読みやすいように形成しなおしています)
Super Hackers 枠
優れたプログラミングスキルを持った方が当選しやすい枠です。この枠を希望される方はウォームアップ問題、ラウンド1問題、ラウンド2問題(2 問中 1 問)、ラウンド 3 Super Hackers 問題を解いてください。


Top Favorites 枠
単なるプログラミングだけでなく、ユーザの方に高く評価されるアプリケーションを作成された方が当選しやすい枠です。また、過去のコミュニティ活動が評価される枠でもあります。ウォームアップ問題、ラウンド 1 問題、ラウンド 2 問題( 2 問中 1 問)、ラウンド 3 Top Favorites 問題を解いてください。

Next Generation 枠
上記の枠では当選が難しくても、意欲がある方ならご参加いただけるように特別にご用意した枠です。従来イベントに参加することが難しかった方もご参加しやすくなっています。この枠を希望される方はウォームアップ問題、エッセイをご記入ください。また、登録時にご入力いただいた情報を元に採点いたします。
※詳細についてはDevQuizのページを参照してください

正直このQuiz結構苦労しました。

まず最初のウォームアップ
 調べれば分かる事なので特に問題なし

次のラウンド1
 「HTML5 間違い探し」だったので、HTML5のコードチェッカーに通すだけで非常に楽でした

そしてラウンド2
これは2種類の問題のいずれかを選択して解く問題でした。

1)ラウンド 2: Google Maps API
問題としては、「n個の地点が与えられる。その0個目の地点をスタートとして全地点を経由して最短時間でスタート地点に戻るルートを見つけ出せ」という問題。地点間の移動に掛る時間はMaps APIを用いて算出するという条件付き。

難易度が3つあり、レベル3は3個の地点、レベル2は6個の地点、レベル3は10個の地点が指示され、それぞれの地点の緯度・経度が提供されます

2)ラウンド 2: 2-legged OAuth
この問題は、 2-leggedにて指定されたサーバーにアクセスしてOAuth認証するというもの OAuth認証に際して幾つかの条件が指定されていました(postするkey,valueやヘッダに指定文字を含めるなど)


私は最初の Google Maps API を選択して問題を解いてみました。
これは比較的簡単に解く事ができました


問題は次のラウンド3
Super Hackers枠で参加する為には、この難関を突破せねばなりません。
問題は2つ

1)Shiritori

「しりとり」です。サーバーを相手にしりとりをするだけなのですが、最適な解法をみつけなければ簡単に負けてしまいます
レベルが3種類あり、レベルが高くなると使える単語が増えて難易度が増します

レベル1とレベル2は手動で作業してたらサーバーに勝つ事ができましたが、レベル3は単語数が多く手動ではなかなか勝てませんでしたので、諦めてプログラムを書く事にしました。
そして、作ったプログラムを使って答えを算出している最中、暇だったので手作業でチャレンジしたら勝ってしまいました。プログラムを書く為に色々と考えて、なんとなく法則が分かっていたからでしょうね

次が最大の難関
2)PAC-MAN

名前が示すとおり、バンダイナムコの「パックマン」です。
敵をよけながら全てのクッキーを食べつくす経路を見つけ出せという問題。
これもレベルは3つ。レベルが高くなるとマップが広くなり難易度が挙がります

敵は一定のルールに基づいて移動します。
交差点で右に曲がる敵や、左に曲がる敵。交差点の度に曲がる方向を右、左交互に変える敵
時計周りにプレイヤーを追いかける敵や、反時計に追いかける敵
これらの敵に当たらないようにマップに散らばったクッキーを全て食べるのは非常に困難

いかに少ない手数でクッキーを食べつくすかによって得点が変わってきます

この問題、とてもとても難しかったのですが、一番楽しかったです
アルゴリズムをどうするのがベストなのか!を研究しつつプログラムする
難しい分、楽しい!といった所でしょうか。

残りのTop Favorites 枠は過去のGoogleにたいする貢献度により点数が付与されます
そしてNext Generation枠ではエッセイを書く必要がありました

採点は、まずSuper Hackers枠の合格ラインに入るか判定されます
Super Hackers枠は定員の40%
それに漏れた中でTop Favorites枠の判定がされ、さらに漏れていたらNext Generation枠での判定が行われます

私はなんとかSuper Hackers枠に入る事ができ、GDD2010jpへの参加が許されました。
次回は、GDD2010jpに参加した際の話を書きたいと思います。

Comments are closed.