Nasal-Interpreter/test/life.nas

65 lines
1.2 KiB
Plaintext

import("lib.nas");
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='';
foreach(var line;map)
{
foreach(var elem;line)
s~=elem~' ';
s~='\n';
}
if(os.platform()=="windows")
system("cls");
else
system("clear");
print(s);
}
func()
{
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;
}();