package Ġdays _ 2 0 2 0 Ċ Ċ import Ġutil . Day Ċ Ċ class ĠDay 7 Ġ: ĠDay ( 7 , Ġ 2 0 2 0 ) Ġ{ ĊĠĠĠ Ġval Ġinput Args Ġ= ĊĠĠĠĠĠĠĠ Ġinput List . map Ġ{ Ġrule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrule . split (" Ġbags Ġcontain Ġ"). let Ġ{ Ġ( color , Ġcontains ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġto Ġcontains . split (" Ġbag , Ġ", Ġ" Ġbags , Ġ", Ġ" Ġbag .", Ġ" Ġbags .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotEmpty () Ġ&& Ġit Ġ!= Ġ" no Ġother " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcontain Ġ-> Ġcontain . substring ( 0 , Ġ 1 ). toInt () Ġto Ġcontain . substring ( 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġbags Ġ= Ġinput Args . toMap (); ĊĊĠĠĠ Ġfun Ġget Pack ing List ( ĊĠĠĠĠĠĠĠ Ġbag : ĠString , ĊĠĠĠĠĠĠĠ Ġamount : ĠInt Ġ= Ġ 1 , ĊĠĠĠ Ġ): ĠList < Pair < Int , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġbags [ bag ] ĊĠĠĠĠĠĠĠ Ġif Ġ( list Ġ== Ġnull Ġ|| Ġlist . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( amount Ġto Ġbag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . map Ġ{ Ġ( number , Ġcolor ) Ġ-> Ġget Pack ing List ( color , Ġnumber Ġ* Ġamount ) Ġ}. flatten () Ġ+ Ġ( amount Ġto Ġbag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpart One (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbags . map Ġ{ Ġ( bag ) Ġ-> Ġget Pack ing List ( bag ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. count Ġ{ Ġlist Ġ-> Ġlist . any Ġ{ Ġ(_, Ġcolor ) Ġ-> Ġcolor Ġ== Ġ" sh iny Ġgold " Ġ} Ġ} Ġ- Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpart Two (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Pack ing List (" sh iny Ġgold "). fold ( 0 ) Ġ{ Ġsum , Ġ( amount ) Ġ-> Ġsum Ġ+ Ġamount Ġ} Ġ- Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ }