
ある条件で2016を作成するクイズ
20, 20, 96, 96 の 4 つの自然数をすべて使い, +, ー, ×, ÷, カッコを組み合わせて 2016 を作ってください. なお, それぞれの自然数は合体したりひっくり返したり等のトリッキーな扱い方はせず, そのまま使うものとします
http://b.hatena.ne.jp/entry/anond.hatelabo.jp/20160101205726
正月ぼけで頭がなまっていたので少し頭の体操をしてみた。
JavaScriptで答えを出す
4つの自然数、四則演算、カッコを組み合わせて2016を作成するのでJavaScriptで記述するとこのようになる。
var o = ["+", "-", "*", "/"];
var n = ["20", "20", "96", "96"];
var r = document.getElementById("result");
function check2016(n) {
for (var j = 0; j < o.length; j++){
for (var k = 0; k < o.length; k++){
for (var l = 0; l < o.length; l++){
for (var m = 0; m < o.length; m++){
var val1 = '(' + n[0] + o[j] + n[1] + ')' + o[k] + n[2] + o[l] + n[3];
var val2 = n[0] + o[j] + '(' + n[1] + o[k] + n[2] + ')' + o[l] + n[3];
var val3 = n[0] + o[j] + n[1] + o[k] + '(' + n[2] + o[l] + n[3] + ')';
var val4 = '(' + n[0] + o[j] + n[1] + o[k] + n[2] + ')' + o[l] + n[3];
var val5 = n[0] + o[j] + '(' + n[1] + o[k] + n[2] + o[l] + n[3] + ')';
if(eval(val1) === 2016) {
r.innerHTML += (val1 + " = " + eval(val1)) + '<br>';
break;
}
else if(eval(val2) === 2016) {
r.innerHTML += (val2 + " = " + eval(val2)) + '<br>';
break;
}
else if(eval(val3) === 2016) {
r.innerHTML += (val3 + " = " + eval(val3)) + '<br>';
break;
}
else if(eval(val4) === 2016) {
r.innerHTML += (val4 + " = " + eval(val4)) + '<br>';
break;
}
else if(eval(val5) === 2016) {
r.innerHTML += (val5 + " = " + eval(val5)) + '<br>';
break;
}
}
}
}
}
}
for(var i = 0; i < 4; i++) {
var tmp = n.shift();
n.push(tmp);
check2016(n);
}
このような問題は決して手動で行ってはならない。
