1
0
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:
Justin Lin
2021-04-23 21:38:33 +08:00
parent e2d9643e72
commit d18665329f

View File

@@ -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)) = function hashset_del(set, elem, eq = function(e1, e2) e1 == e2, hash = function(e) _str_hash(e)) =
let( let(
bidx = hash(elem) % len(set), leng_set = len(set),
bidx = hash(elem) % leng_set,
bucket = set[bidx], 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))) let(i = find_index(bucket, function(e) eq(e, elem)))
i == -1 ? set : i == -1 ? set :
concat( [
slice(set, 0, bidx), for(j = 0; j < leng_set; j = j + 1) j == bidx ?
[concat(slice(bucket, 0, i), slice(bucket, i + 1))], [for(k = 0; k < leng_bucket; k = k + 1) if(k != i) bucket[k]] :
slice(set, bidx + 1) set[j]
); ];