JSFiddle - React, Tailwind, and code Playground
JavaScript
function ajedrez(reinas, rey) {
var rX, rY, ty, i, j, k, crX, crY, pos;
var positions = [0, 0, 0, 0, 0, 0, 0, 0, 0];
rX = rey[0];
rY = rey[1];
ty = 0;
for (i = 0; i < reinas.length; i++) {
pos = 0;
crX = reinas[i][0];
crY = reinas[i][1];
for (j = rY - 1; j <= rY + 1; j++) {
if (j == crY) {
positions[pos]++;
positions[pos + 1]++;
positions[pos + 2]++;
}
ty = Math.abs(crY - j);
for (k = rX - 1; k <= rX + 1; k++, pos++) {
if (k == crX) {
if (j == crY) {
positions[pos]--;
continue;
}
positions[pos]++;
}
if (Math.abs(crX - k) == ty) positions[pos]++;
}
}
}
var exits = 0;
for(j=rY-1;j<=rY+1;j++)
{
if(j<0 || j>7)continue;
for(k=rX-1;k<=rX+1;k++,pos++)
{
if(k<0 || k>7)continue;
if(positions[pos]==0 && pos!=4)
exits++;
}
}
//return positions;
if (!exits) {
if (positions[4]) return "jaque mate";
return "ahogado";
}
return exits;
}
var reinas = [
[0, 0],
[3, 2]
],
rey = [2, 1]
console.time("run");
var reinas = [
[0, 0],
[3, 2]
],
rey = [2, 1];
for(var c=0;c<10000;c++)
ajedrez(reinas, rey);
console.timeEnd("run");