blob: dbc34847728bdaf62311f7b27ace469025297cc9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
var W=7,H=8;
function emptyboard(){
return new Array(H).fill(0).map(function(){
return new Array(W).fill(0).map(function(){
return {n:0,c:0};
});
});
}
function bdcopy(bd){
return bd.map(function(r){
return r.map(function(c){
return {n:c.n,c:c.c};
});
});
}
function stabilise(bd){
var newbd;
var changes;
var x,y,nnei,quo;
do {
changes=false;
newbd=bdcopy(bd);
for(y=0;y<H;y++){
for(x=0;x<W;x++){
nnei=(y>0)+(x>0)+(y<H-1)+(x<W-1);
if(bd[y][x].n>=nnei){
quo=~~(bd[y][x].n/nnei);
newbd[y][x].n-=quo*nnei;
if(y>0) {newbd[y-1][x].n+=quo;newbd[y-1][x].c=bd[y][x].c;}
if(x>0) {newbd[y][x-1].n+=quo;newbd[y][x-1].c=bd[y][x].c;}
if(y<H-1){newbd[y+1][x].n+=quo;newbd[y+1][x].c=bd[y][x].c;}
if(x<W-1){newbd[y][x+1].n+=quo;newbd[y][x+1].c=bd[y][x].c;}
changes=true;
}
}
}
bd=newbd;
} while(changes);
return bd;
}
|