mud/lib/secure/sefun/arrays.c
2020-09-06 05:43:07 -07:00

32 lines
684 B
C

mixed *scramble_array(mixed *arr){
mixed *ret = copy(arr);
ret = sort_array(ret, (:random(3)-1:) );
return ret;
}
mixed *distinct_array(mixed *arr) {
mapping tmp;
int i, maxi;
for(i = 0, tmp = allocate_mapping(maxi = sizeof(arr)); i<maxi; i++){
tmp[arr[i]] = 1;
}
return keys(tmp);
}
mixed *singular_array(mixed *arr) {
return distinct_array(arr);
}
mixed *remove_member(mixed *arr, int i){
int size;
mixed ret;
if(!arr || (size = (sizeof(arr) - 1)) < i) return 0;
if(!i) ret = arr[1..];
else if(size == i) ret = arr[0..(size - 1)];
else {
ret = arr[0..(i - 1)] + arr[(i + 1)..];
}
return ret;
}