| NEWPARTS(; P, F) {let Pdone = [], Pnew = [], length_of_P = # P in {while P ≠ [] do let p = P.head in {P := P.tail; if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone := Pdone + pe(p.first, p.first + p.count -1, 0), Pnew := Pnew + pe(p.first + p.count, p.last, 0), F := F[p.first + p.count, p.last, length_of_P + # Pnew] else Pdone := Pdone + p}; P := Pdone + Pnew} } |