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:
@@ -9,12 +9,13 @@
|
||||
**/
|
||||
|
||||
use <../../__comm__/_str_hash.scad>;
|
||||
use <../_impl/_find_eq.scad>;
|
||||
use <../_impl/_find_eq.scad>;
|
||||
|
||||
function hashmap_get(map, key, eq = undef, hash = function(e) _str_hash(e)) =
|
||||
let(
|
||||
bidx = hash(key) % len(map),
|
||||
bucket = map[bidx]
|
||||
)
|
||||
bucket == [] ? undef :
|
||||
let(i = _find_eq(bucket, key, eq))
|
||||
i == -1 ? undef : bucket[i][1];
|
@@ -1,18 +1,18 @@
|
||||
use <../../_impl/_find_eq.scad>;
|
||||
|
||||
|
||||
function _hashset_add(buckets, b_numbers, elem, eq, hash) =
|
||||
let(
|
||||
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]];
|
@@ -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;
|
Reference in New Issue
Block a user