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 =...