JSFiddle - React, Tailwind, and code Playground
by marlanga
JavaScript
function addReina(tablero,reina){
var xd1=reina[1]-reina[0], yd1=0, xd2=reina[1]+reina[0], yd2=0;
tablero[reina[0]][reina[1]]+=3;
for (var i=0;i<8;i++)
{
if (i!=reina[0]) tablero[i][reina[1]]++; //Horizontal
if (i!=reina[1]) tablero[reina[0]][i]++; //Vertical
if (xd1+i<8 && yd1+i<8 && yd1+i!=reina[0] && xd1+i!=reina[1]) tablero[yd1+i][xd1+i]++; //Diagonal 1
if (xd2-i>=0 && xd2-i<8 && yd2+i<8 && yd2+i!=reina[0] && xd2+i!=reina[1]) tablero[yd2+i][xd2-i]++; //Diagonal 2
}
}
function compruebaRey(tablero,rey){
var libres=0;
tablero[rey[0]][rey[1]]++;
for (var x=Math.max(0,rey[1]-1);x<=Math.min(7,rey[1]+1);x++)
{
for (var y=Math.max(0,rey[0]-1);y<=Math.min(7,rey[0]+1);y++)
{
if (x==rey[1] && y==rey[0]) continue;
if (!tablero[y][x] || tablero[y][x]==3) libres++;
}
}
if (libres==0)
{
if (tablero[rey[0]][rey[1]]==1) return "ahogado";
return "jaque mate";
}
if (tablero[rey[0]][rey[1]]==1) return "libre";
return libres;
}
function ajedrez(reinas,rey) {
var tablero=[];
for (var i=0;i<8;i++) tablero.push([0,0,0,0,0,0,0,0]);
addReina(tablero,reinas[0]);
addReina(tablero,reinas[1]);
dibuja(tablero);
return compruebaRey(tablero,rey);
}
function dibuja(tablero){
for (var i=0;i<8;i++) console.log(tablero[i].join(" "));
}
var reinas =[[0,0],[3,2]], rey=[2,1];
console.log(ajedrez(reinas,rey));