diff --git a/nasal_builtin.h b/nasal_builtin.h index 8ddb933..5f4350c 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -526,7 +526,7 @@ var builtin_chr(var* local,gc& ngc) { } var builtin_char(var* local,gc& ngc) { - return ngc.newstr((char)local[1].num()); + return ngc.newstr((unsigned char)local[1].num()); } var builtin_values(var* local,gc& ngc) { diff --git a/test/life.nas b/test/life.nas index 865d857..d5d7c1d 100644 --- a/test/life.nas +++ b/test/life.nas @@ -1,23 +1,17 @@ -var map=nil; +import.stl.process_bar; -var check=func(x,y){ - if(x>29) x=0; - if(y>49) y=0; - return map[x][y]; -} - -var new_map=func(){ +var new_map=func(width,height){ var tmp=[]; - setsize(tmp,30); + setsize(tmp,height); forindex(var i;tmp){ tmp[i]=[]; - setsize(tmp[i],50); + setsize(tmp[i],width); } return tmp; } -var prt=func(){ - var s='\e[0;0H'; +var prt=func(map){ + var s='\e[1;1H'; foreach(var line;map){ foreach(var elem;line) s~=elem~' '; @@ -27,32 +21,135 @@ var prt=func(){ unix.sleep(1/160); } -func(){ +var run=func(width,height){ + + var check=func(_width,_height){ + if(_height>=height) _height=0; + if(_width>=width) _width=0; + return map[_height][_width]=='O'; + } # enable ANSI escape sequence if(os.platform()=="windows") system("color"); print("\ec"); rand(time(0)); - map=new_map(); + var map=new_map(width,height); + var tmp=new_map(width,height); forindex(var i;map) forindex(var j;map[i]) - map[i][j]=rand()<0.45?'O':' '; + map[i][j]=rand()<0.45?'O':'.'; - var calc=[[0,1],[1,0],[0,-1],[-1,0],[1,1],[1,-1],[-1,-1],[-1,1]]; for(var r=0;r<400;r+=1){ prt(map); - var tmp=new_map(); - for(var i=0;i<30;i+=1) - for(var j=0;j<50;j+=1){ - var cnt=0; - foreach(var k;calc) - cnt+=(check(i+k[0],j+k[1])=='O'); + for(var i=0;i=height) _height=0; + if(_width>=width) _width=0; + return map[_height][_width]==1; + } + + for(var r=0;r<1001;r+=1){ + ts.stamp(); + for(var i=0;i