class ĠDay 0 7 ( lines : List < String >) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbags Ġ= Ġparse Lines ( lines ) ĊĠĠĠ Ġfun Ġsolve Part 1 () Ġ= Ġfind Parents (). count () Ġ- Ġ 1 ĊĊĠĠĠ Ġfun Ġsolve Part 2 () Ġ= Ġb agg age Cost () Ġ- Ġ 1 ĊĊĠĠĠ Ġprivate Ġfun Ġparse Lines ( lines : ĠList < String >): ĠSet < Rule > Ġ= ĊĠĠĠĠĠĠĠ Ġlines . filter Not Ġ{ Ġit . contains (" no Ġother ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġrow . replace ( unused Text , Ġ""). split ( whitespace ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġparts . take ( 2 ). join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts . drop ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. window ed ( 3 , Ġ 3 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . first (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . drop ( 1 ). join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĊĠĠĠ Ġprivate Ġfun Ġfind Parents ( bag : ĠString Ġ= Ġ" sh iny Ġgold "): ĠSet < String > Ġ= ĊĠĠĠĠĠĠĠ Ġbags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . child Ġ== Ġbag Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġfind Parents ( it . parent Name ) Ġ}. toSet () Ġ+ Ġbag ĊĊĠĠĠ Ġprivate Ġfun Ġb agg age Cost ( bag : ĠString Ġ= Ġ" sh iny Ġgold "): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġbags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . parent Name Ġ== Ġbag Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum Of Ġ{ Ġit . quantity Ġ* Ġb agg age Cost ( it . child ) Ġ} Ġ+ Ġ 1 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġunused Text Ġ= Ġ""" b ags | bag | contain |, | \. """. to Regex () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwhitespace Ġ= Ġ""" \ s + """. to Regex () ĊĠĠĠ Ġ} Ċ }