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.process_bar;
var char_ttf=[
[" "," "," "," "," "," "],
@ -126,21 +127,66 @@ var curve5=func(line=4){
}
var ansi_escape_sequence=func(){
# decoration
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");
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");
for(var i=40;i<50;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m ");
for(var i=40;i<48;i+=1)
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");
for(var i=90;i<100;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m ");
for(var i=90;i<98;i+=1)
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");
for(var i=100;i<110;i+=1)
print(rightpad(i,4),":\e["~i~"mhi\e[0m ");
for(var i=100;i<108;i+=1)
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");
# 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

View File

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