class ĠStream Ġ{ ĊĠĠĠ Ġfun Ġremove G arbage ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġround 1 Ġ= Ġinput . replace ( Regex (" !. "), Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġround 1 . replace ( Regex ("< .*? >, ? "), Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalc Score ( cleaned : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlevel Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġscore Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcleaned . split (" "). forEach Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" {" Ġ-> Ġlevel ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Ġ+= Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġscore ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcount G arbage Payload ( input : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcleaned Ġ= Ġinput . replace ( Regex (" !. "), Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex ("< .* ?> ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġregex . findAll ( cleaned ). sum By Ġ{ Ġit . value . length Ġ- Ġ 2 Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġfilename Ġ= Ġ" 0 9 _ input . txt " ĊĠĠĠ Ġval Ġreader Ġ= ĠStream :: class . java . getResource ( filename ). open Stream (). buffered Reader () ĊĊĠĠĠ Ġval Ġinput Ġ= Ġreader . readLine () ĊĠĠĠ Ġval Ġcleaned Ġ= ĠStream (). remove G arbage ( input ) ĊĠĠĠ Ġprintln ( cleaned ) ĊĠĠĠ Ġval Ġscore Ġ= ĠStream (). calc Score ( cleaned ) ĊĠĠĠ Ġprintln (" Score Ġ$ score ") ĊĊĠĠĠ Ġval Ġpart 2 Ġ= ĠStream (). count G arbage Payload ( input ) ĊĠĠĠ Ġprintln (" Part Ġ 2 : Ġ$ part 2 ") Ċ } ĊĊ