package Ġde . sk yr ising . a oc 2 0 2 0 Ċ Ċ class ĠBenchmark Day 3 Ġ: ĠBenchmark Day ( 3 ) Ċ Ċ fun Ġregister Day 3 () Ġ{ ĊĠĠĠ Ġpuzzle LS ( 3 , Ġ" To bo gg an ĠTra jectory Ġv 1 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtrees Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġline [ x Ġ% Ġline . length ] Ġ== Ġ'#' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tree Ġ) trees ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrees ĊĠĠĠ Ġ} ĊĠĠĠ Ġpuzzle LB ( 3 , Ġ" To bo gg an ĠTra jectory Ġv 2 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtrees Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġit [ 0 ]. remaining () ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġline [ x ] Ġ== Ġ'# '. to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tree ) Ġtrees ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġwrap ( x Ġ+ Ġ 3 , Ġlen ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrees ĊĠĠĠ Ġ} ĊĠĠĠ Ġpuzzle LS ( 3 , Ġ" Part ĠTwo Ġv 1 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġslo pes Ġ= Ġint ArrayOf ( 1 , Ġ 3 , Ġ 5 , Ġ 7 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġint ArrayOf ( 1 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġtrees Ġ= ĠLong Array ( 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġint ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( line Count , Ġline ) Ġin Ġit . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Count Ġ% Ġstep [ i ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġline [ x [ i ] Ġ% Ġline . length ] Ġ== Ġ'#' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tree ) Ġtrees [ i ] ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx [ i ] Ġ+= Ġslo pes [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// trees . content ToString () ĊĠĠĠĠĠĠĠ Ġtrees . reduce Ġ{ a , Ġb Ġ-> Ġa Ġ* Ġb } ĊĠĠĠ Ġ} ĊĠĠĠ Ġpuzzle LB ( 3 , Ġ" Part ĠTwo Ġv 2 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġt 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġt 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġt 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġt 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġt 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġit [ 0 ]. remaining () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( line Count , Ġline ) Ġin Ġit . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt 0 Ġ+= Ġif Ġ( line [ x 0 ] Ġ== Ġ'# '. to Byte ()) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx 0 Ġ= Ġwrap ( x 0 Ġ+ Ġ 1 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x 0 Ġ>= Ġlen ) Ġx 0 Ġ-= Ġlen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt 1 Ġ+= Ġif Ġ( line [ x 1 ] Ġ== Ġ'# '. to Byte ()) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġwrap ( x 1 Ġ+ Ġ 3 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x 1 Ġ>= Ġlen ) Ġx 1 Ġ-= Ġlen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt 2 Ġ+= Ġif Ġ( line [ x 2 ] Ġ== Ġ'# '. to Byte ()) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx 2 Ġ= Ġwrap ( x 2 Ġ+ Ġ 5 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x 2 Ġ>= Ġlen ) Ġx 2 Ġ-= Ġlen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt 3 Ġ+= Ġif Ġ( line [ x 3 ] Ġ== Ġ'# '. to Byte ()) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx 3 Ġ= Ġwrap ( x 3 Ġ+ Ġ 7 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x 3 Ġ>= Ġlen ) Ġx 3 Ġ-= Ġlen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Count Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 4 Ġ+= Ġif Ġ( line [ x 4 ] Ġ== Ġ'# '. to Byte ()) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 4 Ġ= Ġwrap ( x 4 Ġ+ Ġ 1 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x 4 Ġ>= Ġlen ) Ġx 4 Ġ-= Ġlen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt 0 . to Long () Ġ* Ġt 1 Ġ* Ġt 2 Ġ* Ġt 3 Ġ* Ġt 4 ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġwrap ( x : ĠInt , Ġlen : ĠInt ) Ġ= Ġx Ġ- Ġif Ġ( x Ġ>= Ġlen ) Ġlen Ġelse Ġ 0