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)) =
|
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]
|
||||||
);
|
];
|
||||||
|
Reference in New Issue
Block a user