mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-26 16:04:46 +02:00
refactor: check eq in _dedup
This commit is contained in:
@@ -3,6 +3,7 @@ use <../some.scad>;
|
|||||||
function _dedup(elems, leng, buckets, eq, hash, bucket_numbers) =
|
function _dedup(elems, leng, buckets, eq, hash, bucket_numbers) =
|
||||||
let(
|
let(
|
||||||
end = leng - 1,
|
end = leng - 1,
|
||||||
|
_dedup_add = is_undef(eq) ? _dedup_add_search : _dedup_add_some,
|
||||||
n_buckets_lt = [
|
n_buckets_lt = [
|
||||||
for(i = 0, n_buckets = _dedup_add(buckets, [i, elems[i]], eq, hash, bucket_numbers), is_continue = i < end;
|
for(i = 0, n_buckets = _dedup_add(buckets, [i, elems[i]], eq, hash, bucket_numbers), is_continue = i < end;
|
||||||
is_continue;
|
is_continue;
|
||||||
@@ -12,17 +13,21 @@ function _dedup(elems, leng, buckets, eq, hash, bucket_numbers) =
|
|||||||
)
|
)
|
||||||
_dedup_add(n_buckets_lt[end - 1], [end, elems[end]], eq, hash, bucket_numbers);
|
_dedup_add(n_buckets_lt[end - 1], [end, elems[end]], eq, hash, bucket_numbers);
|
||||||
|
|
||||||
function _dedup_add(buckets, i_elem, eq, hash, bucket_numbers) =
|
_dedup_add_some = function(buckets, i_elem, eq, hash, bucket_numbers)
|
||||||
let(
|
let(
|
||||||
elem = i_elem[1],
|
elem = i_elem[1],
|
||||||
b_idx = hash(elem) % bucket_numbers,
|
b_idx = hash(elem) % bucket_numbers,
|
||||||
bucket = buckets[b_idx]
|
bucket = buckets[b_idx]
|
||||||
)
|
)
|
||||||
(
|
some(bucket, function(i_e) eq(i_e[1], elem)) ? buckets : _add(buckets, bucket, i_elem, b_idx);
|
||||||
is_undef(eq) ?
|
|
||||||
search([elem], bucket, num_returns_per_match = 1, index_col_num = 1) != [[]] :
|
_dedup_add_search = function(buckets, i_elem, eq, hash, bucket_numbers)
|
||||||
some(bucket, function(i_e) eq(i_e[1], elem))
|
let(
|
||||||
) ? buckets : _add(buckets, bucket, i_elem, b_idx);
|
elem = i_elem[1],
|
||||||
|
b_idx = hash(elem) % bucket_numbers,
|
||||||
|
bucket = buckets[b_idx]
|
||||||
|
)
|
||||||
|
search([elem], bucket, num_returns_per_match = 1, index_col_num = 1) != [[]] ? buckets : _add(buckets, bucket, i_elem, b_idx);
|
||||||
|
|
||||||
function _add(buckets, bucket, i_elem, b_idx) =
|
function _add(buckets, bucket, i_elem, b_idx) =
|
||||||
let(leng = len(buckets))
|
let(leng = len(buckets))
|
||||||
|
Reference in New Issue
Block a user