ある条件で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); }
このような問題は決して手動で行ってはならない。