@ Opt In ( Experimental Std lib Api :: class ) Ċ class ĠDay 0 6 ( raw : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinput : ĠMap < Int , ĠLong > Ġ= Ġraw . split ("," ). map ( String :: toInt ). group () ĊĊĠĠĠ Ġfun Ġpart 1 (): ĠLong Ġ= Ġinput ĊĠĠĠĠĠĠĠ Ġ. steps ( 8 0 ) ĊĠĠĠĠĠĠĠ Ġ. values . sum () ĊĊĠĠĠ Ġfun Ġpart 2 (): ĠLong Ġ= Ġinput ĊĠĠĠĠĠĠĠ Ġ. steps ( 2 5 6 ) ĊĠĠĠĠĠĠĠ Ġ. values . sum () ĊĊĠĠĠ Ġprivate Ġfun ĠList < Int >. group (): ĠMap < Int , ĠLong > Ġ= Ġgrouping By Ġ{ Ġit Ġ}. each Count (). map Values Ġ{ Ġit . value . to Long () Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMap < Int , ĠLong >. steps ( count : ĠInt ): ĠMap < Int , ĠLong > Ġ= Ġ( 0 Ġuntil Ġcount ). fold ( this ) Ġ{ Ġacc , Ġ_ Ġ-> Ġacc . step () Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMap < Int , ĠLong >. step (): ĠMap < Int , ĠLong > Ġ= Ġbuild Map Ġ{ ĊĠĠĠĠĠĠĠ Ġthis @ step . entries . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( key Ġ= Ġ 6 ) Ġ{ Ġit Ġ+ Ġvalue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( key Ġ= Ġ 8 ) Ġ{ Ġit Ġ+ Ġvalue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġupdate ( key Ġ= Ġkey Ġ- Ġ 1 ) Ġ{ Ġit Ġ+ Ġvalue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< K > ĠMutable Map < K , ĠLong >. update ( key : ĠK , Ġremap : Ġ( old : ĠLong ) Ġ-> ĠLong ) Ġ= Ġcompute ( key ) Ġ{ Ġ_, Ġold Ġ-> Ġremap ( old Ġ?: Ġ 0 ) Ġ} Ċ Ċ } Ċ