diff --git a/src/util/_impl/_sort_impl.scad b/src/util/_impl/_sort_impl.scad index f95905db..051922b6 100644 --- a/src/util/_impl/_sort_impl.scad +++ b/src/util/_impl/_sort_impl.scad @@ -1,11 +1,4 @@ -function _greaterThan(elem1, elem2, i) = - i == -1 ? false : - elem1[i] > elem2[i] ? true : - elem1[i] == elem2[i] ? _greaterThan(elem1, elem2, i - 1) : false; - -function greaterThan(elem1, elem2) = _greaterThan(elem1, elem2, len(elem1)); - -function lessThan(elem1, elem2) = !greaterThan(elem1, elem2) && elem1 != elem2; +use ; function _default_sort(lt) = let(leng = len(lt)) diff --git a/src/util/_impl/_vt_default_comparator.scad b/src/util/_impl/_vt_default_comparator.scad new file mode 100644 index 00000000..1ab484a9 --- /dev/null +++ b/src/util/_impl/_vt_default_comparator.scad @@ -0,0 +1,8 @@ +function _greaterThan(elem1, elem2, i) = + i == -1 ? false : + elem1[i] > elem2[i] ? true : + elem1[i] == elem2[i] ? _greaterThan(elem1, elem2, i - 1) : false; + +function greaterThan(elem1, elem2) = _greaterThan(elem1, elem2, len(elem1)); + +function lessThan(elem1, elem2) = !greaterThan(elem1, elem2) && elem1 != elem2; \ No newline at end of file diff --git a/src/util/bsearch.scad b/src/util/bsearch.scad index 4098d219..68c0f436 100644 --- a/src/util/bsearch.scad +++ b/src/util/bsearch.scad @@ -1,11 +1,4 @@ -function _greaterThan(elem1, elem2, i) = - i == -1 ? false : - elem1[i] > elem2[i] ? true : - elem1[i] == elem2[i] ? _greaterThan(elem1, elem2, i - 1) : false; - -function greaterThan(elem1, elem2) = _greaterThan(elem1, elem2, len(elem1)); - -function lessThan(elem1, elem2) = !greaterThan(elem1, elem2) && elem1 != elem2; +use ; function _binary_search(sorted, elem, low, upper) = low > upper ? -1 : @@ -13,4 +6,5 @@ function _binary_search(sorted, elem, low, upper) = lessThan(sorted[mid], elem) ? _binary_search(sorted, elem, mid + 1, upper) : greaterThan(sorted[mid], elem) ? _binary_search(sorted, elem, low, mid - 1) : mid; +// for example, `sorted` is by zyx function bsearch(sorted, elem) = _binary_search(sorted, elem, 0, len(sorted) - 1); \ No newline at end of file