DevQuiz終了
今日の午前10時にDev Quizの受付終了。結局自分はウォームアップクイズで一問落としてしまって合計92点だった。もったいない…。たぶんHoneyCombに関する問題が間違っていたかなぁと。
調べれば分かるとは言われていたものの、いかんせん取り掛かりが遅すぎたかもしれない。
その他やった問題は、分野別でWeb Game, Android, Google Apps Script, 一人ゲーム、スライドパズル。なんで分野別4つもやってるのか(むしろなぜGoだけやってないのか)というと、2問やればいいってのを見落としていたからw
4つ目やり終えて「ふぅ」って一息ついたときに
(最大2問が得点に加算されます)
というのを見つけて倒れた。貴重な時間が…。
結局分野別の方は4つやってどうだったかというと、一人ゲームは0点で他はOK。こっからコード晒し。
Web Game
とりあえずやった順に、Web Gameから。神経衰弱すな。
これはページ見てすぐ神経衰弱のコードを見に行った。
http://gdd-2011-quiz-japan.appspot.com/js/conc.js
かなり単純なコードで、受け取ったカードのデータ、
$(function() { conc.setup(["b00","b00","00b","bb0","00b","0b0","0b0","bb0"]); });
第一問だとこうなんだけど、conc.setupで受け取っている配列のデータを元にカードを生成してた。
これが渡されている+次のコード、conc.jsの58行目あたりの
if (cards[flip0] == cards[flip1]) { answer[flip0] = flip1; answer[flip1] = flip0; matched += 2; flip0 = flip1 = undefined; if (matched == cards.length) { submit(); } } else {
このへんを見ると、自分に対応する(同じ色が入っている)配列のindexの番号を自分のindexの場所に入れればいいんだなってのが分かる。
そんで最後答えを入れた配列をjoinしてフォームをsubmitしてサーバに答えを送る。そうすると次の問題が返ってくるという流れ。これを64問。
たぶん同じ考えでやった人はたくさんいると思うけど、端から神経衰弱をやる気がないという人の考えだw
自分はこれをユーザースクリプトにして回してました。
コードはこちら。GDD2011 DevQuiz Web Game · GitHub
毎ページで答えができたらフォームをsubmitしてるけど、これをxhrでやってるっていうツイートを見かけた気も。まぁ次のページのソースさえ受けとれちゃえばいいしねw
Google Apps Script
次にやったのはGoogle Apps Script。
これはやりたい事やるGASの命令さえ分かっちゃえばすぐできるものでしたね。
GDD2011 DevQuiz Google Apps Script · GitHub
でもsetNumberFormatに何入れればいいか探し回った。
Android
続いてAndroid、だけど、これはそれ専用でコード作ってないので…。
昔作ったAndroidのHello world的なコードにgetCode()呼び出す部分入れてダイアログに表示させて取得しました。
メールアドレスの大文字小文字を区別してるのを知らなくて、しなくてもいい苦戦を強いられました。
一人ゲーム
そして分野別最後はだめだった一人ゲーム。
数がいくつか与えられます。なるべく少ない手数で数を全て取り除いてください。 あなたは 1 手で、 - 全ての数を半分にする(端数は切り捨て) - 5 の倍数 (0 を含む) を全て取り除く のどちらかの操作をすることができます。
ってのだったから、5の倍数以外の数字を半分にしていって(5の倍数と0は放置)、すべて5の倍数(もしくは0)になった時点で取り除くという考えでプログラムを組んだのだけどだめだった。考えがストレートすぎるんだろうか。コードは以下(間違ってるんだけど)。
GDD2011 DevQuiz 一人ゲーム(×) · GitHub
吐き出された数字に似たようなの多くて、あぁだめぽいな…とは思ったんだけど…。採点後0点ってのを見てこれは一筋縄じゃいかないかと判断して後回しにした(結局最後までやってないけど)。
ここまでやって60点取れて、よし次はチャレンジクイズだと取り掛かったけど、これが全然手も足も出なかった。
スライドパズル
チャレンジクイズはスライドパズルを解くゲーム。全5000問で一問正解0.01点というドSさ。まぁでも結局アルゴリズムが出来上がっちゃえばあとは処理待ちかなと軽い気持ちで取り掛かった。
…全然だめだった。
そもそもどうやって壁を避けて0を目的地まで持ってくのか、どうやって数字を壁を避けつつ正解の場所に置いていくのか、肝となるアルゴリズムが全然できず時間切れとなった。もう最も効率がいい方法で、とか考える余裕は一切なかった。まず答えに持っていけない。後半は延々ループする自分のコードと減っていく残り時間を見てただただ萎えていきました…。
GDD2011 DevQuiz スライドパズル(没) · GitHub
ひたすらアナログのスライドパズルが欲しくなるクイズでした。
結局最初にも書いたように10時締切時点で92点。ボーダー目安は101点前後。まぁその数字を見なくてもまず100点取ってなきゃお話にならないので残念な結果でした。それでもやったことないタイプのプログラム組めて楽しかったかな。今回解けなかった問題については…また今度解く…かな!