def argmin_dist.go
unified-nsga-iii@0.2.2.0 · survival.bend:461
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
461def argmin_dist.go(+asgs: List<&2, Assignment>, +fuel: Nat, cand: List<&2, Nat>) -> Nat:
462 match fuel cand:
463 case 0n Nil{}:
464 0n
465 case 0n +i <> Nil{}:
466 i
467 case 0n +i <> +j <> js:
468 argmin_join(asgs, i, argmin_dist.go(asgs, 0n, j <> js))
469 case 1n+p Nil{}:
470 0n
471 case 1n+p +i <> Nil{}:
472 i
473 case 1n+p h <> t:
474 +all = {h <> t : List<&2, Nat>}
475 +mid = Nat.div(Util.list_len(Nat, all), 2n)
476 lo hi = argmin_dist.go(asgs, p, List.take(&2, Nat, all, mid)) argmin_dist.go(asgs, p, List.drop(&2, Nat, all, mid))
477 argmin_join(asgs, lo, hi)