package Ġcom . m ue ll erm or itz . days Ċ Ċ import Ġcom . m ue ll erm or itz . days . day 3 . S lope Ċ import Ġcom . m ue ll erm or itz . days . utils . Input Utils . Companion . input As Lines Ċ Ċ class ĠDay 3 ( val Ġtext : ĠString ) Ġ: ĠDay Interface Ġ{ ĊĠĠĠ Ġoverride Ġval Ġday Label Ġ= Ġ" day 3 " ĊĠĠĠ Ġprivate Ġval Ġde compose : ĠRegex Ġ= Ġ""" ^ ([ 0 - 9 ]+ )- ([ 0 - 9 ]+) Ġ([ a - z ]): Ġ( .* )$ """. to Regex () ĊĊĠĠĠ Ġoverride Ġfun Ġpart 1 Impl (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Movement Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġvertical Movement Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġslope Ġ= ĠS lope ( input As Lines ( text )) ĊĠĠĠĠĠĠĠ Ġreturn Ġslope . trees On Slide Track ( horizontal Movement , Ġvertical Movement ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpart 2 Impl (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġslope Ġ= ĠS lope ( input As Lines ( text )) ĊĠĠĠĠĠĠĠ Ġreturn Ġmultiply Tree Hits For Different S led ges ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġslope , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Pair ( 1 , Ġ 1 ), ĠPair ( 3 , Ġ 1 ), ĠPair ( 5 , Ġ 1 ), ĠPair ( 7 , Ġ 1 ), ĠPair ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmultiply Tree Hits For Different S led ges ( slope : ĠS lope , Ġs led ges : ĠList < Pair < Int , ĠInt >> ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġs led ges . map Ġ{ Ġslope . trees On Slide Track ( it . first , Ġit . second ) Ġ}. reduce Ġ{ Ġacc , Ġcurrent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc Ġ* Ġcurrent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }