package Ġcom . gr appen maker . a oc 2 0 2 1 Ċ Ċ fun ĠSolution . solve Day 5 (): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠ Ġ// ĠPart Ġone ĊĠĠĠ Ġval Ġlines Ġ= Ġinput Lines . map Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġpoints Ġ= Ġline . split (" Ġ-> Ġ"). map Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnums Ġ= Ġpair . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( nums [ 0 ]. toInt (), Ġnums [ 1 ]. toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpoints [ 0 ] .. points [ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUtil Ġfor Ġboth Ġparts ĊĠĠĠ Ġval Ġget Answer Ġ= Ġ{ Ġseq : ĠSequence < Line > Ġ-> ĊĠĠĠĠĠĠĠ Ġseq . flatMap Ġ{ Ġit . points On Line Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( mutable Map Of < Point , ĠInt >()) Ġ{ Ġacc , Ġpoint Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! acc . containsKey ( point )) Ġacc [ point ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc [ point ] Ġ= Ġacc [ point ] !! Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. count Ġ{ Ġit . value Ġ>= Ġ 2 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPart Ġone Ġand Ġtwo ĊĠĠĠ Ġreturn Ġget Answer ( lines . as Sequence (). filter Ġ{ Ġit . is Str aight () Ġ}) Ġto Ġget Answer ( lines . as Sequence ()) Ċ }