add concat for vector

This commit is contained in:
ValKmjolnir 2023-07-09 16:45:10 +08:00
parent 7e72661332
commit 32e23741eb
5 changed files with 24 additions and 7 deletions

View File

@ -322,6 +322,19 @@ inline void vm::o_sub() {op_calc(-);}
inline void vm::o_mul() {op_calc(*);} inline void vm::o_mul() {op_calc(*);}
inline void vm::o_div() {op_calc(/);} inline void vm::o_div() {op_calc(/);}
inline void vm::o_lnk() { inline void vm::o_lnk() {
if (ctx.top[-1].type==vm_vec && ctx.top[0].type==vm_vec) {
ngc.temp = ngc.alloc(vm_vec);
for(auto i : ctx.top[-1].vec().elems) {
ngc.temp.vec().elems.push_back(i);
}
for(auto i : ctx.top[0].vec().elems) {
ngc.temp.vec().elems.push_back(i);
}
ctx.top[-1] = ngc.temp;
ngc.temp = nil;
--ctx.top;
return;
}
ctx.top[-1] = ngc.newstr(ctx.top[-1].tostr()+ctx.top[0].tostr()); ctx.top[-1] = ngc.newstr(ctx.top[-1].tostr()+ctx.top[0].tostr());
--ctx.top; --ctx.top;
} }

View File

@ -45,12 +45,12 @@ var var_sort=func(){
j-=1; j-=1;
} }
vec[i]=tmp; vec[i]=tmp;
quick_sort_core(vec,left,i-1,cmp); quick_sort_core(vec,left,i-1);
quick_sort_core(vec,i+1,right,cmp); quick_sort_core(vec,i+1,right);
return nil; return nil;
} }
return func(vec){ return func(vec){
quick_sort_core(vec,0,size(vec)-1,cmp); quick_sort_core(vec,0,size(vec)-1);
return nil; return nil;
} }
}(); }();

View File

@ -1,9 +1,10 @@
import.std.sort; import.std.sort;
var vec=[]; var vec=[];
setsize(vec, 1e4);
rand(time(0)); rand(time(0));
for(var i=0;i<1e4;i+=1) for(var i=0;i<1e4;i+=1)
append(vec,int(rand()*1e5)); vec[i] = int(rand()*1e5);
sort(vec); sort(vec);
for(var i=1;i<1e4;i+=1) { for(var i=1;i<1e4;i+=1) {
if (vec[i]<vec[i-1]) { if (vec[i]<vec[i-1]) {
@ -20,7 +21,7 @@ var test=func(n){
var ts=maketimestamp(); var ts=maketimestamp();
ts.stamp(); ts.stamp();
var_sort(a); var_sort(a);
println("[time] ",str(n)," in ",ts.elapsedMSec()/1000," sec (value)"); println("[time] ",str(n)," in ",ts.elapsedMSec()/1000," sec (direct cmp)");
var a=[]; var a=[];
setsize(a,n); setsize(a,n);
@ -29,7 +30,7 @@ var test=func(n){
} }
ts.stamp(); ts.stamp();
sort(a); sort(a);
println("[time] ",str(n)," in ",ts.elapsedMSec()/1000," sec (lambda)"); println("[time] ",str(n)," in ",ts.elapsedMSec()/1000," sec (lambda cmp)");
} }
for(var i=1000;i<1e6;i*=10){ for(var i=1000;i<1e6;i*=10){

View File

@ -245,6 +245,7 @@ var next_to_last = list1[-2];
# concatenate vectors: # concatenate vectors:
# #
var joined_list = [1, 2, 3] ~ [4, 5, 6]; var joined_list = [1, 2, 3] ~ [4, 5, 6];
print(joined_list, "\n");
### ###
### Now some fun examples: ### Now some fun examples:

View File

@ -228,4 +228,6 @@ for(var a=0;a<16;a+=1) {
var temp=b; var temp=b;
println("temp^=0x"~h[a]~" -> 0x",h[temp^=a]," temp&=0x"~h[a]~" -> 0x",h[temp&=a]," temp|=0x"~h[a]~" -> 0x",h[temp|=a]); println("temp^=0x"~h[a]~" -> 0x",h[temp^=a]," temp&=0x"~h[a]~" -> 0x",h[temp&=a]," temp|=0x"~h[a]~" -> 0x",h[temp|=a]);
} }
} }
print([0, 1, 2]~[3, 4, 5], "\n");