1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-13 18:24:28 +02:00

refactor: check bucket []

This commit is contained in:
Justin Lin
2022-04-14 21:03:08 +08:00
parent 9bb9dd4260
commit ad5c2a984a
3 changed files with 8 additions and 6 deletions

View File

@@ -16,5 +16,6 @@ function hashmap_get(map, key, eq = undef, hash = function(e) _str_hash(e)) =
bidx = hash(key) % len(map),
bucket = map[bidx]
)
bucket == [] ? undef :
let(i = _find_eq(bucket, key, eq))
i == -1 ? undef : bucket[i][1];

View File

@@ -5,14 +5,14 @@ function _hashset_add(buckets, b_numbers, elem, eq, hash) =
idx = hash(elem) % b_numbers,
bucket = buckets[idx]
)
_find_eq(bucket, elem, eq) != -1 ? buckets : _add(buckets, b_numbers, bucket, elem, idx);
bucket != [] && _find_eq(bucket, elem, eq) != -1 ? buckets : _add(buckets, b_numbers, bucket, elem, idx);
function _hashset_add_by(buckets, b_numbers, elem, eq, hash, f_eq) =
let(
idx = hash(elem) % b_numbers,
bucket = buckets[idx]
)
f_eq(bucket, elem, eq) != -1 ? buckets : _add(buckets, b_numbers, bucket, elem, idx);
bucket != [] && f_eq(bucket, elem, eq) != -1 ? buckets : _add(buckets, b_numbers, bucket, elem, idx);
function _add(buckets, b_numbers, bucket, elem, idx) =
[for(i = 0; i < b_numbers; i = i + 1) i == idx ? [each bucket, elem] : buckets[i]];

View File

@@ -12,4 +12,5 @@ use <../../__comm__/_str_hash.scad>;
use <../_impl/_find_eq.scad>;
function hashset_has(set, elem, eq = undef, hash = function(e) _str_hash(e)) =
_find_eq(set[hash(elem) % len(set)], elem, eq) != -1;
let(bucket = set[hash(elem) % len(set)])
bucket != [] && _find_eq(bucket, elem, eq) != -1;