def niche_loop
unified-nsga-iii@0.2.2.0 · survival.bend:659
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
659def niche_loop(fuel: Nat, k: Nat, rows: List<&2, NRow>, +counts: List<&2, Nat>, selected: List<&2, Nat>) -> List<&2, Nat>:
660 match fuel k rows:
661 case 0n kk r:
662 selected
663 case f 0n r:
664 selected
665 case f kk Nil{}:
666 selected
667 case 1n+f 1n+krest +r0 <> +rs:
668 +rows2 = {r0 <> rs : List<&2, NRow>}
669 +r = pick_ref.rows(counts, rows2)
670 +pick = pick_member.rows(counts, rows2, r)
671 niche_loop(
672 f,
673 krest,
674 drop_nrow(rows2, pick),
675 Util.inc_at(counts, r),
676 List.append(&2, Nat, selected, [pick])
677 )