mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-17 20:11:50 +02:00
use for directly
This commit is contained in:
@@ -14,15 +14,16 @@ use <../find_index.scad>;
|
||||
|
||||
function hashset_del(set, elem, eq = function(e1, e2) e1 == e2, hash = function(e) _str_hash(e)) =
|
||||
let(
|
||||
bidx = hash(elem) % len(set),
|
||||
leng_set = len(set),
|
||||
bidx = hash(elem) % leng_set,
|
||||
bucket = set[bidx],
|
||||
leng = len(bucket)
|
||||
leng_bucket = len(bucket)
|
||||
)
|
||||
leng == 0 ? set :
|
||||
leng_bucket == 0 ? set :
|
||||
let(i = find_index(bucket, function(e) eq(e, elem)))
|
||||
i == -1 ? set :
|
||||
concat(
|
||||
slice(set, 0, bidx),
|
||||
[concat(slice(bucket, 0, i), slice(bucket, i + 1))],
|
||||
slice(set, bidx + 1)
|
||||
);
|
||||
[
|
||||
for(j = 0; j < leng_set; j = j + 1) j == bidx ?
|
||||
[for(k = 0; k < leng_bucket; k = k + 1) if(k != i) bucket[k]] :
|
||||
set[j]
|
||||
];
|
||||
|
Reference in New Issue
Block a user