JSFiddle - React, Tailwind, and code Playground
JavaScript
function ajedrez(reinas,rey){
var oy,ox;
var dx,dy,adx,ady;
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;
pos=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++;
}
}
if(!exits)
{
if(positions[4])
return {res:"jaque mate",pos:positions};
return {res:"ahogado",pos:positions};
}
return {res:exits,pos:positions};
}
function paint()
{
console.time("identificador");
var reinas =[[0,0],[1,1]], rey=[2,2];
//for(var c=0;c<10000;c++)
v=ajedrez(reinas,rey);
drawTable(reinas,rey,v.pos);
if(v.res=="jaque mate" || v.res=="ahogado")
console.debug(v.res);
else
console.debug("Existen "+v.res+" salidas");
var reinas =[[1,0],[0,7]], rey=[1,1];
//for(var c=0;c<10000;c++)
v=ajedrez(reinas,rey);
drawTable(reinas,rey,v.pos);
if(v.res=="jaque mate" || v.res=="ahogado")
...