package Ġkat as . kotlin . ad vent of code . day 7 Ċ Ċ import Ġkat as . kotlin . ad vent of code . day 5 .* Ċ import Ġnon stdlib .* Ċ import Ġjava . io .* Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġprogram Ġ= ĠFile (" src / kat as / kotlin / ad vent of code / day 7 / input . txt ") ĊĠĠĠĠĠĠĠ Ġ. read Text (). split ("," ). map ( String :: toInt ). to Mutable List () ĊĊĠĠĠ Ġval Ġmax Output Ġ= Ġ( 5 .. 9 ). per mutations () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( phase 1 , Ġphase 2 , Ġphase 3 , Ġphase 4 , Ġphase 5 ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoutput 5 : ĠSequence < Int > Ġ= Ġempty Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmixed Input Ġ= Ġsequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput 5 . forEach Ġ{ Ġyield ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput 1 Ġ= ĠSe qu encing Amp ( input Ġ= Ġmixed Input , Ġphase Ġ= Ġphase 1 ). run ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput 2 Ġ= ĠSe qu encing Amp ( input Ġ= Ġoutput 1 , Ġphase Ġ= Ġphase 2 ). run ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput 3 Ġ= ĠSe qu encing Amp ( input Ġ= Ġoutput 2 , Ġphase Ġ= Ġphase 3 ). run ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput 4 Ġ= ĠSe qu encing Amp ( input Ġ= Ġoutput 3 , Ġphase Ġ= Ġphase 4 ). run ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput 5 Ġ= ĠSe qu encing Amp ( input Ġ= Ġoutput 4 , Ġphase Ġ= Ġphase 5 ). run ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput 5 . last () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. max OrNull () ĊĊĠĠĠ Ġprintln ( max Output ) Ġ// Ġ 7 6 2 1 1 1 4 7 Ċ } Ċ Ċ class ĠSe qu encing Amp ( val Ġinput : ĠSequence < Int >, Ġval Ġphase : ĠInt ) Ġ{ ĊĠĠĠ Ġfun Ġrun ( program : ĠMutable List < Int >): ĠSequence < Int > Ġ= Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall Inputs Ġ= Ġ( sequence Of ( phase ) Ġ+ Ġinput ). iterator () ĊĠĠĠĠĠĠĠ Ġexecute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Ġ= Ġ{ Ġall Inputs . next () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Ġ= Ġ{ Ġyield ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊĊ