package Ġcom . chr is wk . a oc . ad vent 2 0 2 1 Ċ Ċ import Ġcom . chr is wk . a oc . Ad vent Day Ċ import Ġcom . chr is wk . a oc . util . report Ċ Ċ class ĠDay 1 : ĠAd vent Day ( 2 0 2 1 , Ġ 1 ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= ĠDay 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . part 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . part 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġinput As Ints Ġ= Ġinput As Lines . map Ġ{ Ġit . toInt () Ġ} ĊĊĊĠĠĠ Ġfun Ġpart 1 (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġincreasing ( input As Ints ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġincreasing ( l : ĠList < Int >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġl . fold (( 0 Ġto Ġ 0 ), Ġincreases ()). first ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġincreasing Windows ( l : ĠList < Int >, Ġwindow Size : ĠInt Ġ= Ġ 3 ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġl . window ed ( window Size ). map Ġ{ Ġit . sum () Ġ}. fold (( 0 Ġto Ġ 0 ), Ġincreases ()). first ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġincreases () Ġ= Ġ{ Ġ( in creases , Ġprevious ): ĠPair < Int , ĠInt >, Ġcur : ĠInt Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( previous Ġ< Ġcur ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincreases Ġ+ Ġ 1 Ġto Ġcur ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincreases Ġto Ġcur ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġpart 2 (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġincreasing Windows ( input As Ints ) ĊĠĠĠ Ġ} Ċ } Ċ