package Ġy 2 0 2 1 . day 0 6 Ċ Ċ import Ġcommon . Answers Ċ import Ġcommon . A oc Solution Ċ import Ġcommon . annotations . Ao CP uzzle Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠDay 0 6 Lan tern fish (). solve The m () Ċ } Ċ Ċ @ Ao CP uzzle ( year Ġ= Ġ 2 0 2 1 , Ġday Ġ= Ġ 6 ) Ċ class ĠDay 0 6 Lan tern fish Ġ: ĠA oc Solution Ġ{ ĊĠĠĠ Ġoverride Ġval Ġanswers Ġ= ĠAn swers ( sample Part 1 Ġ= Ġ 5 9 3 4 , Ġsample Part 2 Ġ= Ġ 2 6 9 8 4 4 5 7 5 3 9 , Ġpart 1 Ġ= Ġ 3 5 5 3 8 6 , Ġpart 2 Ġ= Ġ 1 6 1 3 4 1 5 3 2 5 8 0 9 ) ĊĊĠĠĠ Ġoverride Ġfun Ġsolve Part 1 ( input : ĠList < String >): ĠAny Ġ= ĊĠĠĠĠĠĠĠ ĠPop ulation ( input . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġage By ( days Ġ= Ġ 8 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ĊĊĠĠĠ Ġoverride Ġfun Ġsolve Part 2 ( input : ĠList < String >): ĠAny Ġ= ĊĠĠĠĠĠĠĠ ĠPop ulation ( input . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġage By ( days Ġ= Ġ 2 5 6 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size Ċ } Ċ Ċ class ĠPop ulation ( initial : ĠString ) Ġ{ ĊĠĠĠ Ġvar Ġpopulation : ĠMutable Map < Int , ĠLong > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġval Ġsize : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpopulation . toList (). sum Of Ġ{ Ġ(_, Ġamount ) Ġ-> Ġamount Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinitial . split (',' ). map Ġ{ Ġit . toInt () Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulation [ it ] Ġ= Ġpopulation . get OrDefault ( it , Ġ 0 L ) Ġ+ Ġ 1 L ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġage By ( days : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( days ) Ġ{ Ġage One Day () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġage One Day () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpopulation On Next Day : ĠMutable Map < Int , ĠLong > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġpopulation . forEach Ġ{ Ġ( days Until Birth , Ġamount Of Fish ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Days Until Birth Ġ= Ġwhen Ġ( days Until Birth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulation On Next Day . birth ( amount Of Fish ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdays Until Birth Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulation On Next Day . add Fish ( days Until Birth Ġ= Ġnext Days Until Birth , Ġamount Of Fish ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopulation Ġ= Ġpopulation On Next Day ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMutable Map < Int , ĠLong >. add Fish ( days Until Birth : ĠInt , Ġamount Of Fish : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ days Until Birth ] Ġ= Ġget OrDefault ( days Until Birth , Ġ 0 L ) Ġ+ Ġamount Of Fish ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMutable Map < Int , ĠLong >. birth ( amount : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ 8 ] Ġ= Ġamount ĊĠĠĠ Ġ} Ċ } Ċ