1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-11 09:14:29 +02:00
This commit is contained in:
Justin Lin
2022-03-11 12:07:31 +08:00
parent 2b3fc8f80e
commit 5f400c124d
3 changed files with 34 additions and 12 deletions

View File

@@ -1,8 +1,17 @@
use <../some.scad>;
function _dedup(elems, leng, buckets, eq, hash, bucket_numbers, i = 0) =
i == leng ? buckets :
_dedup(elems, leng, _dedup_add(buckets, [i, elems[i]], eq, hash, bucket_numbers), eq, hash, bucket_numbers, i + 1);
function _dedup(elems, leng, buckets, eq, hash, bucket_numbers) =
let(
end = leng - 1,
n_buckets_lt = [
for(i = 0, n_buckets = _dedup_add(buckets, [i, elems[i]], eq, hash, bucket_numbers);
i < end;
i = i + 1, n_buckets = _dedup_add(n_buckets, [i, elems[i]], eq, hash, bucket_numbers))
n_buckets
]
)
_dedup_add(n_buckets_lt[len(n_buckets_lt) - 1], [end, elems[end]], eq, hash, bucket_numbers);
function _dedup_add(buckets, i_elem, eq, hash, bucket_numbers) =
let(

View File

@@ -1,9 +1,13 @@
use <_hashmap_put_impl.scad>;
function _hashmap(kv_lt, leng, buckets, b_numbers, eq, hash, i = 0) =
i == leng ? buckets :
function _hashmap(kv_lt, leng, buckets, b_numbers, eq, hash) =
let(
kv_lt_i = kv_lt[i],
n_buckets = _hashmap_put(buckets, b_numbers, kv_lt_i[0], kv_lt_i[1], eq, hash)
end = leng - 1,
n_buckets_lt = [
for(i = 0, n_buckets = _hashmap_put(buckets, b_numbers, kv_lt[i][0], kv_lt[i][1], eq, hash);
i < end;
i = i + 1, n_buckets = _hashmap_put(n_buckets, b_numbers, kv_lt[i][0], kv_lt[i][1], eq, hash))
n_buckets
]
)
_hashmap(kv_lt, leng, n_buckets, b_numbers, eq, hash, i + 1);
_hashmap_put(n_buckets_lt[len(n_buckets_lt) - 1], b_numbers, kv_lt[end][0], kv_lt[end][1], eq, hash);

View File

@@ -1,6 +1,15 @@
use <_hashset_add_impl.scad>;
function _hashset(lt, leng, buckets, b_numbers, eq, hash, i = 0) =
i == leng ? buckets :
let(n_buckets = _hashset_add(buckets, b_numbers, lt[i], eq, hash))
_hashset(lt, leng, n_buckets, b_numbers, eq, hash, i + 1);
function _hashset(lt, leng, buckets, b_numbers, eq, hash) =
let(
end = leng - 1,
n_buckets_lt = [
for(i = 0, n_buckets = _hashset_add(buckets, b_numbers, lt[i], eq, hash);
i < end;
i = i + 1, n_buckets = _hashset_add(n_buckets, b_numbers, lt[i], eq, hash))
n_buckets
]
)
_hashset_add(n_buckets_lt[len(n_buckets_lt) - 1], b_numbers, lt[end], eq, hash);