package Ġbe . sw sb . a oc 2 0 2 1 . day 1 0 Ċ Ċ import Ġbe . sw sb . a oc 2 0 2 1 . day 1 0 . SyntaxError . Auto Completion Ċ import Ġbe . sw sb . a oc 2 0 2 1 . day 1 0 . SyntaxError . Cor ruption Ċ Ċ object ĠDay 1 0 Ġ{ ĊĠĠĠ Ġfun Ġsolve 1 ( input : ĠList < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . map NotNull Ġ{ Ġit . compile () Ġ}. filter Is Instance < Cor ruption >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum Of Ġ{ Ġcor ruption Ġ-> Ġcor ruption . penalty Points Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsolve 2 ( input : ĠList < String >): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauto Completion Points Ġ= Ġinput . map NotNull Ġ{ Ġit . compile () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Auto Completion >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . points Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠ Ġreturn Ġauto Completion Points [ auto Completion Points . size Ġ/ Ġ 2 ] ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠString . compile (): ĠSyntax Error ? Ġ{ ĊĠĠĠ Ġval Ġopen ings Ġ= Ġ" ({ [< " ĊĠĠĠ Ġval Ġclosing s Ġ= Ġ" )} ] >" ĊĠĠĠ Ġval Ġexpected Ġ= Ġmutable ListOf < Char >() ĊĠĠĠ ĠforEach Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġin Ġopen ings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Ġ+= Ġclosing s [ open ings . indexOf ( c )] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġexpected . last ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCor ruption ( expected . last (), Ġc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected . remove Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( expected . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠAuto Completion ( expected . join ToString (" "). reversed ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠSyntax Error Ġ{ ĊĠĠĠ Ġdata Ġclass ĠCor ruption ( val Ġexpected : ĠChar , Ġval Ġactual : ĠChar ) Ġ: ĠSyntax Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpenalty Points : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( actual ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ')' Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' ]' Ġ-> Ġ 5 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' Ġ-> Ġ 1 1 9 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' >' Ġ-> Ġ 2 5 1 3 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠAuto Completion ( val Ġmissing Closing s : ĠString ) Ġ: ĠSyntax Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoints : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġmissing Closing s . fold ( 0 ) Ġ{ Ġacc , Ġc Ġ-> Ġ( acc Ġ* Ġ 5 ) Ġ+ Ġpoints Table [ c ] !! Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpoints Table Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ')' Ġto Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' ]' Ġto Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' Ġto Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' >' Ġto Ġ 4 , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ