fun Ġmain () Ġ{ čĊĠĠĠ Ġclass ĠValues ( var Ġx : ĠInt , Ġvar Ġy : ĠInt , Ġvar Ġaim : ĠInt ) čĊčĊĠĠĠ Ġfun Ġpart 1 ( input : ĠList < String >): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġinput čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġl Ġ-> Ġl . split (' Ġ'). let Ġ{ ĠPair ( it [ 0 ], Ġit [ 1 ]. toInt ()) Ġ} Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( Values ( 0 , Ġ 0 , Ġ 0 )) Ġ{ Ġacc , Ġcmd Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( cmd . first ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" forward " Ġ-> Ġacc . apply Ġ{ Ġx Ġ+= Ġcmd . second Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" down " Ġ-> Ġacc . apply Ġ{ Ġy Ġ+= Ġcmd . second Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" up " Ġ-> Ġacc . apply Ġ{ Ġy Ġ-= Ġcmd . second Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Command Ġnot Ġrecognized ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. run Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ* Ġy čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġpart 2 ( input : ĠList < String >): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġinput čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġl Ġ-> Ġl . split (' Ġ'). let Ġ{ ĠPair ( it [ 0 ], Ġit [ 1 ]. toInt ()) Ġ} Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( Values ( 0 , Ġ 0 , Ġ 0 )) Ġ{ Ġacc , Ġcmd Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( cmd . first ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" forward " Ġ-> Ġacc . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġcmd . second čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġaim Ġ* Ġcmd . second čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" down " Ġ-> Ġacc . apply Ġ{ Ġaim Ġ+= Ġcmd . second Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" up " Ġ-> Ġacc . apply Ġ{ Ġaim Ġ-= Ġcmd . second Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Command Ġnot Ġrecognized ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. run Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ* Ġy čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġread Input (" Day 0 2 "). let Ġ{ čĊĠĠĠĠĠĠĠ Ġprintln (" Answer Ġ 1 : Ġ${ part 1 ( it )} ") čĊĠĠĠĠĠĠĠ Ġprintln (" Answer Ġ 2 : Ġ${ part 2 ( it )} ") čĊĠĠĠ Ġ} č Ċ }