def min_count.go

unified-nsga-iii@0.2.2.0 · survival.bend:370

import unified-nsga-iii@0.2.2.0/survival.bend as Survival
import Base
import unified-nsga-iii@0.2.2.0/util.bend as Util

370def min_count.go(+counts: List<&2, Nat>, +fuel: Nat, refs: List<&2, Nat>) -> Nat:
371  match fuel refs:
372    case 0n Nil{}:
373      4294967295n
374    case 0n +r <> rs:
375      Util.nat_min(Util.get_nat(counts, r), min_count.go(counts, 0n, rs))
376    case 1n+p Nil{}:
377      4294967295n
378    case 1n+p +r <> Nil{}:
379      Util.get_nat(counts, r)
380    case 1n+p h <> t:
381      +all = {h <> t : List<&2, Nat>}
382      +mid = Nat.div(Util.list_len(Nat, all), 2n)
383      lo hi = min_count.go(counts, p, List.take(&2, Nat, all, mid)) min_count.go(counts, p, List.drop(&2, Nat, all, mid))
384      Util.nat_min(lo, hi)

Uses (8)

Used by (1)