📝 update scripts

This commit is contained in:
ValKmjolnir
2023-11-16 23:19:03 +08:00
parent a03739ebb2
commit 28a42346b7
72 changed files with 1285 additions and 1237 deletions
+32 -32
View File
@@ -1,19 +1,19 @@
use std.process_bar;
use std.runtime;
var new_map=func(width,height){
var new_map = func(width,height) {
var tmp=[];
setsize(tmp,height);
forindex(var i;tmp){
forindex(var i;tmp) {
tmp[i]=[];
setsize(tmp[i],width);
}
return tmp;
}
var prt=func(map){
var prt = func(map) {
var s='\e[H';
foreach(var line;map){
foreach(var line;map) {
foreach(var elem;line)
s~=elem~' ';
s~='\n';
@@ -22,16 +22,16 @@ var prt=func(map){
unix.sleep(1/160);
}
var run=func(width,height){
var run = func(width,height) {
var check=func(_width,_height){
if(_height>=height) _height=0;
if(_width>=width) _width=0;
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")
if (os.platform()=="windows")
system("color");
print("\ec");
rand(time(0));
@@ -42,13 +42,13 @@ var run=func(width,height){
forindex(var j;map[i])
map[i][j]=rand()<0.45?'O':'.';
for(var r=0;r<100;r+=1){
for(var r=0;r<100;r+=1) {
prt(map);
for(var i=0;i<height;i+=1)
for(var j=0;j<width;j+=1){
for(var j=0;j<width;j+=1) {
var cnt=check(j,i+1)+check(j+1,i)+check(j,i-1)+check(j-1,i)+check(j+1,i+1)+check(j-1,i-1)+check(j+1,i-1)+check(j-1,i+1);
if(cnt==2) tmp[i][j]=map[i][j];
elsif(cnt==3) tmp[i][j]='O';
if (cnt==2) tmp[i][j]=map[i][j];
elsif (cnt==3) tmp[i][j]='O';
else tmp[i][j]='.';
}
(map,tmp)=(tmp,map);
@@ -56,10 +56,10 @@ var run=func(width,height){
return;
};
var ppm_gen=func(width,height){
var ppm_gen = func(width,height) {
var pixels=width*height;
var new_map=func(){
var new_map = func() {
var tmp=[];
setsize(tmp,pixels);
return tmp;
@@ -68,9 +68,9 @@ var ppm_gen=func(width,height){
# iteration counter and trigger for ppm/data generator
var iter_to_print=0;
var init=func(){
var init = func() {
var res=new_map();
if(io.exists(".life_data")) {
if (io.exists(".life_data")) {
var vec=split("\n",io.readfile(".life_data"));
if (num(vec[0])!=width or num(vec[1])!=height) {
die("incorrect width or height: "~vec[0]~":"~str(width)~" / "~vec[1]~":"~str(height))
@@ -78,7 +78,7 @@ var ppm_gen=func(width,height){
iter_to_print=num(vec[2]);
var data=vec[3];
var n="1"[0];
for(var i=0;i<pixels;i+=1){
for(var i=0;i<pixels;i+=1) {
res[i]=data[i]==n?1:0;
}
return res;
@@ -94,23 +94,23 @@ var ppm_gen=func(width,height){
return res;
}
var store=func(){
var store = func() {
var fd=io.open(".life_data","w");
io.write(fd,str(width)~"\n"~str(height)~"\n"~str(iter_to_print)~"\n");
for(var i=0;i<pixels;i+=1){
for(var i=0;i<pixels;i+=1) {
io.write(fd,map[i]==1?"1":"0");
}
io.close(fd);
}
var gen=func(filename){
var gen = func(filename) {
# P3 use ASCII number
# P6 use binary character
var fd=io.open(filename,"wb");
io.write(fd,"P6\n"~width~" "~height~"\n255\n");
var white=char(255)~char(255)~char(255);
var black=char(0)~char(0)~char(0);
for(var i=0;i<pixels;i+=1){
for(var i=0;i<pixels;i+=1) {
io.write(fd,map[i]==1?white:black);
}
io.close(fd);
@@ -121,27 +121,27 @@ var ppm_gen=func(width,height){
var map=init();
var tmp=new_map();
var check=func(_width,_height){
if(_height>=height) _height=0;
if(_width>=width) _width=0;
var check = func(_width,_height) {
if (_height>=height) _height=0;
if (_width>=width) _width=0;
return map[_height*width+_width]==1;
}
for(var r=0;r<1001;r+=1){
for(var r=0;r<1001;r+=1) {
ts.stamp();
for(var i=0;i<height;i+=1){
for(var j=0;j<width;j+=1){
for(var i=0;i<height;i+=1) {
for(var j=0;j<width;j+=1) {
var cnt=check(j,i+1)+check(j+1,i)+check(j,i-1)+check(j-1,i)+check(j+1,i+1)+check(j-1,i-1)+check(j+1,i-1)+check(j-1,i+1);
if(cnt==2) tmp[i*width+j]=map[i*width+j];
elsif(cnt==3) tmp[i*width+j]=1;
if (cnt==2) tmp[i*width+j]=map[i*width+j];
elsif (cnt==3) tmp[i*width+j]=1;
else tmp[i*width+j]=0;
}
}
(map,tmp)=(tmp,map);
var calc_tm=ts.elapsedMSec();
var duration=int(calc_tm/1000*(1e3-r));
if(r-int(r/10)*10==0) {
if(r){
if (r-int(r/10)*10==0) {
if (r) {
store();
}
gen("iteration_"~str(iter_to_print)~".ppm");