internal Ġfun Ġto bo gan ( area : ĠList < CharArray >, Ġdir : ĠPoint ): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġpos Ġ= ĠPoint ( 0 , Ġ 0 ) ĊĠĠĠ Ġvar Ġcount Ġ= Ġ 0 L ĊĠĠĠ Ġwhile Ġ( pos . y Ġ< Ġarea . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( area [ pos . y ][ pos . x ] Ġ== Ġ'# ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpos . x Ġ= Ġ( pos . x Ġ+ Ġdir . x ) Ġ% Ġarea [ pos . y ]. size ĊĠĠĠĠĠĠĠ Ġpos . y Ġ+= Ġdir . y ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" slope Ġ${ dir }: Ġ${ count }") ĊĠĠĠ Ġreturn Ġcount Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġarea Ġ= Ġall Lines ( args , Ġ" day 3 . in "). map Ġ{ Ġit . toCharArray () Ġ}. toList () ĊĠĠĠ Ġval Ġdirs Ġ= ĠarrayOf ( Point ( 1 , Ġ 1 ), ĠPoint ( 3 , Ġ 1 ), ĠPoint ( 5 , Ġ 1 ), ĠPoint ( 7 , Ġ 1 ), ĠPoint ( 1 , Ġ 2 )) ĊĠĠĠ Ġprintln ( dirs . fold ( 1 L ) Ġ{ Ġs , Ġit Ġ-> Ġs Ġ* Ġto bo gan ( area , Ġit ) Ġ}) Ċ }