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_div() {op_calc(/);}
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;
}

View File

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

View File

@ -1,9 +1,10 @@
import.std.sort;
var vec=[];
setsize(vec, 1e4);
rand(time(0));
for(var i=0;i<1e4;i+=1)
append(vec,int(rand()*1e5));
vec[i] = int(rand()*1e5);
sort(vec);
for(var i=1;i<1e4;i+=1) {
if (vec[i]<vec[i-1]) {
@ -20,7 +21,7 @@ var test=func(n){
var ts=maketimestamp();
ts.stamp();
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=[];
setsize(a,n);
@ -29,7 +30,7 @@ var test=func(n){
}
ts.stamp();
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){

View File

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

View File

@ -229,3 +229,5 @@ for(var a=0;a<16;a+=1) {
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");