月別: 2011年9月

DevQuiz for GDD2011 [Google Apps Script]

わざわざ公開するほどのものではないけれど、GASのコードを公開。

DevQuiz for GDD2011 Google Apps Script

正直なところ、特筆することはない。というかあんまり覚えていない(“・ω・゙)

以下のページ群を参考にしたはず…。もしかしたら読んでないページもあるかも。
User Guide

GAS(Google Apps Script)からATND APIにアクセスする。
UrlFetchとXmlデータの利用 (1/6)
Ajax をマスターする: 第 10 回 JSON を使用したデータ転送


毎回、新規ブック?を作って、そこにGASを追加するのが面倒くさくて、
シートをinsertする前に同名のシートを削除するような動作を書いたのだけれども、
なんかサーバーエラーみたいなのが出て連続削除がうまくいかなかった。
なのでスクリプトを走らせる度にブックを作り直したりした(ノ∀`)

rowとcolumnを間違えたり供給電力と消費電力を逆に入れてしまったりと
右往左往し、計算式の入れ方が今ひとつわからず、静的な計算結果を
突っ込んだりと余り美しくない実装になった(ノ∀`)

これまたごっぐるの思惑通り、GASって結構簡単だしVBAみたいだ(・∀・)と思った。

|ω・`)。oO(でもやっぱり、もう使い方は忘れちゃったりしちゃったりして、もう…)

DevQuiz for GDD2011 [Web Game]

スライドパズルには全く歯が立たなかった…_| ̄|○

と落ち込んでいてもしょうがないのでWeb Gameのコードを公開。
http://molehill.mole-kingdom.com/programming/DevQuiz/Web-Game/index.html


これだけだとあれなので思考の流れというか解くまでの流れでも。
まあスマートではないけどね( ´ ・ ω ・ ` )デブロッパダカラネ


ルール
シンプルな神経衰弱ゲームです。カードはクリックすることでめくることができます。全 64 セットを解くことで問題クリアとなります。

ふーむ…なるほどよくわからない(´・ω・`)
言っていることはわかるが何をどうやれば見当がつかない。
Chrome Extensionをまず触ったことがないし、
JavaScriptもクリックとかやったことないし…

手動で試してみると対になるカードを連続してクリックしないと、
そのアクションはキャンセルになるということはわかった。
まあ神経衰弱だから当たり前か。

ヒント
var element = document.getElementById(‘card0’);
if (element == null) {
  alert(‘Card element is not found. Check element id.’);
} else {
  var myevent = document.createEvent(‘MouseEvents’);
  myevent.initEvent(‘click’, false, true);
  element.dispatchEvent(myevent);
  alert(‘Card color is “‘ + element.style.backgroundColor + ‘”.’);

}

ヒントをダウンロードしてきてもわかったようなわからないような…
そしてAPI Documentは英語と…(´・ω・`)

取り敢えずぐぐってextensionの使い方を調べる。
Chrome Extensions API リファレンスというサイトに辿り着く。

なんか通常版では動かないのでBeta channelを入れないと駄目らしい。めどい。


取り敢えず、Beta channel版にしてextensionを実行。
なるほど、サンプルは要素を取得してイベントを作成して、
その要素で投げれば良いということがわかった。

今わかってることは
・神経衰弱→つまりはペアになるものを連続してクリックしなければならない。
・クリック方法→要素を指定してイベントを作成して、その要素で投げる。
 カードはcardnで指定する。

更に進めると
・ペアの位置がわからなければならない→全カードを走査してその位置を
 把握しなければならない。

おおまかな流れは出来上がったけれどもChrome extensionって
どう作るのかがわからないので上記のページのチュートリアルをやる。

なんとなくわかった(`・ω・´)
外枠部分は独自だけれども、中身はJavaScriptだ。
或意味ガジェットと一緒だ。


この後はもうただスクリプトを書くだけ。
と言ってもJavaScriptのスキルなんてないから、色々とはまった(ノ∀`)

ほぼ完成したので実行させる。
次々と面クリしていくぞ、どや( `・ω・)=3

ってあれ…( ;・´ω・`)

これ最大枚数が可変なんかΣ(゚∀゚;)


急いでcountcard()なる最大枚数を数える関数を作る。
最初、nullじゃなくてundefinedで判定してうまく行かず(ノ∀`)
この辺の細かい違いがよくわかっていないw

で、その後はスムーズに進行して無事クリアヽ( ・∀・)ノ

ごっぐるの狙い通りにChrome extensionって
作るの簡単なんや(・∀・)という感想を持ってこの問題は終了した。

|ω・`)。oO(でも、もう既に作り方を忘れていることは言わないでおいておこう…)

DevQuiz for GDD2011と格闘中(6)

むむむ( ´・ω・`;)

バイト前に仕掛けて行った探索が終わってなかった…しかも全然解けてなかった_| ̄|○
致し方ないので止めた。3×5、5×3はどうもうまくいかない。


DevQuizの為ではないが、自分のPCが余りにも古いことに気づいたので
アップグレード用の新PCパーツを買ってきた。金はなかったが、

DevQuiz解けない→GDD行けない→
GDDや勉強会で使おうと思ってたノートPCをすぐに買う必要がない→
日常使いのPCをアップグレードしよう(`・ω・´)

ということでノートPC用の予算を流用ヽ( ・∀・)ノ

今現在使ってるM/BはBIOSをアップデイトすればPhenom II X4は
使えるようであったが、DDR3メモリの投げ売り状態も鑑み、
M/Bごと新しくし、X6にすることに。

本当は最後の最後まで悩んでいたが、FreetでPhenom II X6 1065Tが
13980円だったので、PC1600のメモリ 4GBx2と一緒に購入。

Freetは調査対象に入ってないのかAKIBA PC HOTLINEの最安値は

14,480になっている。まあたった500円の差なんだけれども、その500円によって
「トータルの価格でPC1333ではなくてPC1600を選択出来る(`・ω・´)」って
いう微妙なお得感が購入の決め手に。

M/Bなどを買った後、帰ってきてデータ移行。中々終わらない_| ̄|○
やっと終わったので旧PCの配線などを抜き取り、新PCの組み上げ準備。
たまにガワを外してサウンドケーブルを付けたりしてたけれど、余りに
久しぶり過ぎて色々と戸惑う。ある程度出来上がったところで或ることに気づく。
あれ、なんかやな予感がする(´・ω・`)?
ケースはmicro ATX用なのに買ってきたM/B
ATXじゃねぇか……( ;・´ω・`)ゴクリッ
そうだった、4年前組んだ時、既に自作機の時代は終わり、グラフィック以外は
M/Bオンボードでどうとでもなると思ってmicro ATXにしたんだった__○_
なんという失態。

動揺を抑えつつ、以前の構成に戻す。色々と時間がかかる___


なんとか終わらせて、3×3,3×4,4×3を上限をあげて探索をかけて寝る。

朝起きて、PCを見てみた。まだ終わってなかった(´・ω・`)
夕方過ぎくらいに終わった。何故か点数が手マージしたものより低かった_| ̄|○
枝刈りとかを組み込もうとしたり、5×5を試そうとしたりしたがうまく行かず。
そんなこんなでまた日付が変わる。

試しに3×3のwallタイプが解けるかソルバを改造した。
数問だけど解けた(・∀・)
今は3x4w、4x3wを掛けているけども、多分最終的に1.2点に行けば良い方か。
今回のDevQuizというかチャレンジパズルは自分には壁が高すぎたな(ノ∀`)
枝刈りをどういう風にしていいかわからないのが敗因。
というよりもアルゴリズムがわかってないのが敗因だな。

DevQuiz for GDD2011と格闘中(5)

4×4で中々解けないので、元のサンプルに記述されていたブロック配置を試してみた。
一瞬でオタワ…( ゚Д゚)

つまりこれは問題によりけりということか。
ということで探索回数の上限を50000くらいにして探索をかけた。
civIIIをやりながら結果を待つ(ノ∀`)

3×3と合わせて0.4になった(・∀・) いやこんなんじゃ駄目じゃん_| ̄|○


深夜案件に出かける前に上限を70000にして実行した。


仕事明けてうろちょろして帰ってきた。結果は0.43だった…_| ̄|○
やはり評価関数とやらをなんとか組み込んで探索回数の上限を
あげるしかないのかな…( ;・´ω・`)ゴクリッ

4×4以下の問題全てにソルバが対応出来るようにちょっといじくる。

3×4、4×3だけを解かせて、今までの結果に手マージして提出。

0.87に(`・ω・´) いや、まだ1点に届かないのか__◯_


途中でやめたけれども4x4を100000上限で探索かけたら、
解けていたのもあるので、今日の仕事前に150000くらいで
仕掛けていこうかな。気がつかないところでエラーが発生する
かもしれないのがちょっと怖いけど。

試しに3×5,5×3も50000上限でかけてみたら1問くらいは
解けているから、これも一緒にかけようか。


今年のGDDはパシフィコ横浜で2000人規模みたいだから去年の
411人?/1000人?(東京会場)よりも合格者数が増えても良さそう
だけれども、どうなんだろうか。

110点以上が現在258人? 一日に付き30人前後が110点以上に到達してるらしい。
単純計算だと締切りまでに120人がプラスされたとして378〜400くらいで
前回の合格者数近くまで行ってしまう。

これまた単純計算で合格者数が800人くらいまでいってくれていたら
或いはと思えるが、100点台が900人くらい居るんだよね(ノ∀`)

やっぱり110点辺りまで行けば安全圏?

でも余りに〜遠い(´・ω・`)♪ ガンダーラ ガンダーラ ゼイセイイトワズインインディア〜♪


関係ないけどインドとインドネシアくらい違うって言うけど、
英語だとIndiaとIndonesiaだから全然違うよねって的外れなことを思った。