update test/ascii-art.nas

This commit is contained in:
ValKmjolnir 2023-01-30 19:13:08 +08:00
parent ac1ee4ddef
commit 22b1841664
2 changed files with 83 additions and 31 deletions

View File

@ -1,4 +1,5 @@
import.stl.padding; import.stl.padding;
import.stl.process_bar;
var char_ttf=[ var char_ttf=[
[" "," "," "," "," "," "], [" "," "," "," "," "," "],
@ -126,21 +127,66 @@ var curve5=func(line=4){
} }
var ansi_escape_sequence=func(){ var ansi_escape_sequence=func(){
# decoration
for(var i=0;i<10;i+=1) for(var i=0;i<10;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m "); print("\e["~i~"m",rightpad(i,4),"\e[0m");
print("\n"); print("\n");
for(var i=30;i<40;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m "); # 8/16 color
for(var i=30;i<38;i+=1)
print("\e["~i~"m ",rightpad(i,4),"\e[0m");
for(var i=30;i<38;i+=1)
print("\e["~i~";1m ",rightpad(i,4),"\e[0m");
print("\n"); print("\n");
for(var i=40;i<50;i+=1) for(var i=40;i<48;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m "); print("\e["~i~"m ",rightpad(i,4),"\e[0m");
for(var i=40;i<48;i+=1)
print("\e["~i~";1m ",rightpad(i,4),"\e[0m");
print("\n"); print("\n");
for(var i=90;i<100;i+=1) for(var i=90;i<98;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m "); print("\e["~i~"m ",rightpad(i,4),"\e[0m");
for(var i=90;i<98;i+=1)
print("\e["~i~";1m ",rightpad(i,4),"\e[0m");
print("\n"); print("\n");
for(var i=100;i<110;i+=1) for(var i=100;i<108;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m "); print("\e["~i~"m ",rightpad(i,4),"\e[0m");
for(var i=100;i<108;i+=1)
print("\e["~i~";1m ",rightpad(i,4),"\e[0m");
print("\n"); print("\n");
# 256 color
for(var i=0;i<16;i+=1) {
for(var j=0;j<16;j+=1) {
var code=str(i*16+j);
print("\e[38;5;"~code~"m ",rightpad(code,4),"\e[0m");
}
print("\n");
}
for(var i=0;i<16;i+=1) {
for(var j=0;j<16;j+=1) {
var code=str(i*16+j);
print("\e[48;5;"~code~"m ",rightpad(code,4),"\e[0m");
}
print("\n");
}
# move curser left and up
var bar=process_bar.default_bar("classic3",30);
var progress=[0,0,0,0,0,0,0,0];
var increase=[0.015,0.03,0.02,0.047,0.04,0.045,0.025,0.016];
foreach(var i;progress) {
print("\e[1000D",bar.bar(i)," ",rightpad(str(int(i*100)),3)," % \n");
}
for(var i=0;i<1/0.015;i+=1) {
print("\e[1000D","\e["~str(size(progress))~"A");
forindex(var j;progress) {
progress[j]+=increase[j];
progress[j]=progress[j]>1?1:progress[j];
print("\e[1000D",bar.bar(progress[j])," ",rightpad(str(int(progress[j]*100)),3)," % \n")
}
unix.sleep(0.02);
}
} }
# enable unicode # enable unicode

View File

@ -1,7 +1,19 @@
import.stl.sort; import.stl.sort;
import.stl.padding;
import.stl.process_bar; import.stl.process_bar;
var test=func(n){ var mess=func(vec) {
srand();
var s=size(vec);
for(var i=s-1;i>=0;i-=1) {
var r=int(rand()*i);
(vec[r],vec[i])=(vec[i],vec[r]);
}
}
var equal_join=func(n) {
# color a(int) b(str) c(int) message a(int) b(str)
# color.c = message.a
var ts=maketimestamp(); var ts=maketimestamp();
var bar=process_bar.high_resolution_bar(40); var bar=process_bar.high_resolution_bar(40);
@ -9,55 +21,49 @@ var test=func(n){
var message=[]; var message=[];
setsize(color,n); setsize(color,n);
setsize(message,n); setsize(message,n);
var last_step=0; var last_step=0;
ts.stamp(); ts.stamp();
for(var i=0;i<n;i+=1){ for(var i=0;i<n;i+=1) {
color[i]=[i,"color "~i,i+n*10]; color[i]=[i,"color "~i,i+n*10];
message[i]=[i+n*10,"message "~i]; message[i]=[i+n*10,"message "~i];
if((i-last_step)/n>1/100){ # generate process bar, every 0.2%
if((i-last_step)/n>1/500) {
last_step=i; last_step=i;
print(" ",bar.bar((i+1)/n)~" "~str(int((i+1)/n*100))~"% \r"); print(" ",bar.bar((i+1)/n)~" \r");
}
}
print(" ",bar.bar((i+1)/n)~" 100% | ",ts.elapsedMSec()/1000," s | ");
var mess=func(vec){
var s=size(vec);
for(var i=s-1;i>=0;i-=1){
var r=int(rand()*i);
(vec[r],vec[i])=(vec[i],vec[r]);
} }
} }
print(" ",bar.bar(1)~" ",rightpad(str(ts.elapsedMSec()/1000),5)," s | ");
mess(color); mess(color);
mess(message); mess(message);
ts.stamp(); ts.stamp();
sort(color,func(a,b){return a[2]<b[2]}); sort(color,func(a,b){return a[2]<b[2]});
sort(message,func(a,b){return a[0]<b[0]}); sort(message,func(a,b){return a[0]<b[0]});
var cnt=0; var cnt=0;
foreach(var c;color){ foreach(var c;color) {
var left=0; var left=0;
var right=size(message)-1; var right=size(message)-1;
var data=c[2]; var data=c[2];
while(left<=right){ while(left<=right) {
var mid=int((left+right)/2); var mid=int((left+right)/2);
var res=message[mid][0]; var res=message[mid][0];
if(data==res){ if(data==res) {
cnt+=1; cnt+=1;
break; break;
}else if(data>res){ } else if(data>res) {
left=mid+1; left=mid+1;
}else{ } else {
right=mid-1; right=mid-1;
} }
} }
} }
println(str(cnt)," result(s) in ",ts.elapsedMSec()/1000," sec"); println(rightpad(str(cnt),7)," in ",ts.elapsedMSec()/1000," s");
} }
for(var i=100;i<1e7;i*=10) for(var i=100;i<1e7;i*=10) {
test(i); equal_join(i);
}