data Ġclass ĠBag ( val Ġcolour : ĠString , Ġval Ġquantity : ĠInt ) Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġbags By Colour Ġ= Ġ{} . java Class . getResource (" input 7 . txt "). read Text (). lines (). map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit . substring Before (" Ġbag ") ĊĠĠĠĠĠĠĠ Ġval Ġbags Ġ= Ġ""" (\ d +) Ġ(\ w + Ġ\ w +)\ b """. to Regex (). findAll ( it ). map Ġ{ Ġmatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( quantity , Ġcolour ) Ġ= Ġmatch . de structured ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBag ( colour , Ġquantity . toInt ()) ĊĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġkey Ġto Ġbags ĊĠĠĠ Ġ}. toMap () ĊĊĠĠĠ Ġfun ĠgetParent B ags ( colour : ĠString ): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġbags By Colour . filter Ġ{ Ġit . value . any Ġ{ Ġbag Ġ-> Ġbag . colour Ġ== Ġcolour Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġ( key , Ġ_) Ġ-> ĠgetParent B ags ( key ) Ġ} Ġ+ Ġcolour ĊĊĠĠĠ Ġfun Ġget Child B ags ( colour : ĠString ): ĠInt Ġ= ĊĠĠĠĠĠĠĠĠ 1 Ġ+ Ġ( b ags By Colour [ colour ]?. map Ġ{ Ġit . quantity Ġ* Ġget Child B ags ( it . colour ) Ġ} ?. sum () Ġ?: Ġ 1 ) ĊĊĠĠĠ ĠgetParent B ags (" sh iny Ġgold "). toSet (). also Ġ{ Ġprintln ( it . size Ġ- Ġ 1 ) Ġ} ĊĠĠĠ Ġget Child B ags (" sh iny Ġgold "). also Ġ{ Ġprintln ( it Ġ- Ġ 1 ) Ġ} Ċ }