package Ġcom . github . de ln i . ad vent _ of _ code . days Ċ Ċ /** Ċ Ġ* Ġ--- ĠDay Ġ 1 : ĠSon ar ĠS weep Ġ--- Ċ Ġ*/ Ċ class ĠDay One : ĠAbstract Day (" 0 1 ", Ġ" Son ar ĠS weep ", Ġ 7 , Ġ 5 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpart 1 ( input : ĠList < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Integer :: parseInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold Indexed ( 0 ) Ġ{ Ġindex , Ġaccumulator , Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Ġ= Ġindex . take If Ġ{ Ġit Ġ>= Ġ 1 Ġ} ?. let Ġ{ ĠInteger . parseInt ( input [ it Ġ- Ġ 1 ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit Ġ> Ġ( previous Ġ?: Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġaccumulator Ġ+ Ġ 1 Ġ} Ġ?: Ġaccumulator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpart 2 ( input : ĠList < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsum med Input Ġ= Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Integer :: parseInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+ ĠgetValue With Offset ( 1 , Ġindex , Ġinput ) Ġ+ ĠgetValue With Offset ( 2 , Ġindex , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsum med Input . fold Indexed ( 0 ) Ġ{ Ġindex , Ġaccumulator , Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Ġ= Ġindex . take If Ġ{ Ġit Ġ>= Ġ 1 Ġ} ?. let Ġ{ Ġsum med Input [ it Ġ- Ġ 1 ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . take If Ġ{ Ġit Ġ> Ġ( previous Ġ?: Ġit ) Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccumulator Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġaccumulator ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetValue With Offset ( offset : ĠInt , Ġindex : ĠInt , Ġinput : ĠList < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( index . take If Ġ{ Ġit Ġ< Ġinput . size Ġ- Ġoffset Ġ} ?. let Ġ{ Ġinput [ it Ġ+ Ġoffset ] Ġ} ?. let ( Integer :: parseInt ) Ġ?: Ġ 0 ) ĊĠĠĠ Ġ} Ċ Ċ }