JSFiddle - React, Tailwind, and code Playground
by rgthree
JavaScript
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
function v(arr, chr) {
return arr['ABCDEFGHIJKLMNOP'.indexOf(chr)];
}
function run(vals) {
let pass = true;
pass = pass && equation(v(vals, 'A'), v(vals, 'B'), v(vals, 'C'), v(vals, 'D'));
pass = pass && equation(v(vals, 'E'), v(vals, 'F'), v(vals, 'G'), v(vals, 'H'));
pass = pass && equation(v(vals, 'I'), v(vals, 'J'), v(vals, 'K'), v(vals, 'L'));
pass = pass && equation(v(vals, 'M'), v(vals, 'N'), v(vals, 'O'), v(vals, 'P'));
pass = pass && equation(v(vals, 'A'), v(vals, 'E'), v(vals, 'I'), v(vals, 'M'));
pass = pass && equation(v(vals, 'B'), v(vals, 'F'), v(vals, 'J'), v(vals, 'N'));
pass = pass && equation(v(vals, 'C'), v(vals, 'G'), v(vals, 'K'), v(vals, 'O'));
pass = pass && equation(v(vals, 'D'), v(vals, 'H'), v(vals, 'L'), v(vals, 'P'));
pass = pass && equation(v(vals, 'A'), v(vals, 'F'), v(vals, 'K'), v(vals, 'P'));
pass = pass && equation(v(vals, 'D'), v(vals, 'G'), v(vals, 'J'), v(vals, 'M'));
return pass;
}
// http://puzzling.stackexchange.com/questions/41658/the-mathy-square-strikes-back
function equation(v1, v2, v3, v4) {
let pass = false;
pass = pass || (v1 + v2 + v3 === v4);
pass = pass || (v1 + v2 * v3 === v4);
pass = pass || (v1 + v2 * v3 === v4);
pass = pass || (v1 * v2 + v3 === v4);
pass = pass || (v1 + v2 === v3 + v4);
pass = pass || (v1 + v2 === v3 * v4);
pass = pass || (v1 * v2 === v3 + v4);
pass = pass || (v1 * v2 === v3 * v4);
pass = pass || (v1 === v2 + v3 + v4);
pass = pass || (v1 === v2 + v3 * v4);
pass = pass || (v1 === v2 * v3 + v4);
pass = pass || (v1 === v2 * v3 * v4);
return pass;
}
tries = {};
count = 0;
max =...