Nasal-Interpreter/test/life.nas

56 lines
1.2 KiB
Plaintext

var map=nil;
var check=func(x,y){
if(x>14) x=0;
if(y>19) y=0;
return map[x][y];
}
var new_map=func(){
var tmp=[];
setsize(tmp,15);
forindex(var i;tmp){
tmp[i]=[];
setsize(tmp[i],20);
}
return tmp;
}
var prt=func()
{
var s='\e[0;0H';
foreach(var line;map){
foreach(var elem;line)
s~=elem~' ';
s~='\n';
}
print(s);
unix.sleep(1/144);
}
func(){
if(os.platform()=="windows")
system("chcp 65001");
print("\ec");
rand(time(0));
map=new_map();
forindex(var i;map)
forindex(var j;map[i])
map[i][j]=rand()>0.7?'O':' ';
var calc=[[0,1],[1,0],[0,-1],[-1,0],[1,1],[1,-1],[-1,-1],[-1,1]];
for(var r=0;r<100;r+=1){
prt(map);
var tmp=new_map();
for(var i=0;i<15;i+=1)
for(var j=0;j<20;j+=1){
var cnt=0;
foreach(var k;calc)
cnt+=(check(i+k[0],j+k[1])=='O');
if(cnt==2) tmp[i][j]=map[i][j];
elsif(cnt==3) tmp[i][j]='O';
else tmp[i][j]=' ';
}
map=tmp;
}
return;
}();