Google Developer Day 2011:DevQuiz解答晒し大会(2)
分野別問題(1) Web Game
24問目くらいまでは手で解いていたが、さすがにめげて、素直にChrome Extensionを拡張して解いた。
方針は、カードを順番にめくっていって、まだ出ていないカードなら色と位置を記録、すでに出てきたカードならペアになるカードをめくっていくというもの。1 passで解けるので楽といえば楽。
var openElement = function(id) {
var element = document.getElementById(id);
if (element == null) {
return null;
} else {
var myevent = document.createEvent('MouseEvents');
myevent.initEvent('click', false, true);
element.dispatchEvent(myevent);
return 'color' + element.style.backgroundColor;
}
}
var color = {};
var i = 0;
alert('Start');
while(true) {
var elementId = 'card' + i;
var elementColor = openElement(elementId);
if (elementColor == null) {
break;
}
if (color[elementColor] == undefined) { // 1枚目が未知のカード
color[elementColor] = elementId;
i = i + 1;
elementId = 'card' + i;
elementColor = openElement(elementId);
if (color[elementColor] == undefined) { // 2枚目が未知のカード
color[elementColor] = elementId;
} else { // 2枚目が既知のカード
var elementId1 = color[elementColor];
openElement(elementId);
openElement(elementId1);
}
} else { // 1枚目が既知のカード
elementId = color[elementColor];
openElement(elementId);
}
i = i + 1;
}
alert('Solved!!!');
5 months ago