diff --git a/src/collection/hashset.scad b/src/collection/hashset.scad index 47c08575..f3d46021 100644 --- a/src/collection/hashset.scad +++ b/src/collection/hashset.scad @@ -4,10 +4,11 @@ use <_impl/_hashset_add_impl.scad>; function hashset(lt, eq = function(e1, e2) e1 == e2, hash = function(e) _str_hash(e), bucket_numbers) = let( + leng_lt = len(lt), lt_undef = is_undef(lt), bucket_numbers_undef = is_undef(bucket_numbers), b_numbers = bucket_numbers_undef ? - (lt_undef ? 16 : len(lt)) : bucket_numbers, + (lt_undef ? 16 : ceil(sqrt(leng_lt))) : bucket_numbers, buckets = [for(i = [0:b_numbers - 1]) []] ) - lt_undef ? buckets : _hashset(lt, len(lt), buckets, eq, hash); \ No newline at end of file + lt_undef ? buckets : _hashset(lt, leng_lt, buckets, eq, hash); \ No newline at end of file