Вот получилось, но из-за какой-то ошибки не работает:
var size_row=10;
var size_col=10;
var Ni=0; //номер итерации
var Nk=300; //max кол-во итераций
var y=-1; //точка проходимости
var n=-2; //точка непроходимости
var s=0; //точка старта
var e=254; //точка финиша
var i,j;
var maze=new Array(
new Array(s,y,y,y,y,y,y,y,n,n),
new Array(n,y,n,n,n,y,y,y,n,n),
new Array(y,y,n,n,n,y,n,y,n,n),
new Array(y,n,n,y,y,y,n,y,n,n),
new Array(y,y,y,n,n,n,n,y,n,n),
new Array(n,n,n,n,n,n,n,y,n,n),
new Array(n,n,n,n,n,n,n,y,n,n),
new Array(n,n,n,n,n,n,n,y,n,n),
new Array(n,n,n,n,n,n,n,y,n,n),
new Array(n,n,n,n,n,n,n,y,y,e)
);
function waveSearch()
{
/*волновой алгоритм*/
while (Ni < Nk)
{
for (i=0; i < size_row; i++)
{
for (j=0; j < size_col; j++)
/*запуск волны*/
if (maze[i][j]==Ni)
{
if (maze[i][j+1]==-1)maze[i][j+1]=Ni+1;
if (maze[i][j-1]==-1)maze[i][j-1]=Ni+1;
if (maze[i+1][j]==-1)maze[i+1][j]=Ni+1;
if (maze[i-1][j]==-1)maze[i-1][j]=Ni+1;
if ((maze[i+1][j]==-2) || (maze[i-1][j]==-2) || (maze[i][j+1]==-2) || (maze[i][j-1]==-2))
{
// return 0;
break;
}
}
}
Ni++;
}
//вывод массива на экран
for(var i=0;i<size_row;i++)
{
for(var j=0;j<size_col;j++)
{
document.write("<span style='width:20px; float:left;'>"+ maze[i][j] +" </span>");
}
document.write("<br/>");
}
}
waveSearch();