AOC Day 1
This commit is contained in:
parent
9395bea26a
commit
130d334729
3 changed files with 2043 additions and 0 deletions
1000
quests/AOC/year2024/quest01-1
Normal file
1000
quests/AOC/year2024/quest01-1
Normal file
File diff suppressed because it is too large
Load diff
1000
quests/AOC/year2024/quest01-2
Normal file
1000
quests/AOC/year2024/quest01-2
Normal file
File diff suppressed because it is too large
Load diff
43
src/AOC/Year2024/Quest01.purs
Normal file
43
src/AOC/Year2024/Quest01.purs
Normal file
|
@ -0,0 +1,43 @@
|
|||
module AOC.Year2024.Quest01 where
|
||||
|
||||
import PCC.Lib
|
||||
|
||||
import Data.Array (transpose, zipWith)
|
||||
import Data.Array as Array
|
||||
import Data.CommutativeRing ((*))
|
||||
import Data.Eq ((==))
|
||||
import Data.EuclideanRing ((-))
|
||||
import Data.Foldable (sum)
|
||||
import Data.Function (($), (<<<))
|
||||
import Data.Functor (map)
|
||||
import Data.Ord (abs)
|
||||
import Data.Semigroup ((<>))
|
||||
import Data.Show (show)
|
||||
import Data.String.Utils (lines, words)
|
||||
import Data.Tuple (Tuple(..))
|
||||
import Data.Unit (Unit)
|
||||
import Effect (Effect)
|
||||
import Effect.Class.Console (log)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Write your solutions here
|
||||
|
||||
part1 :: String -> Effect Unit
|
||||
part1 input = do
|
||||
let datums = map Array.sort $ transpose $ map (Array.mapMaybe parseInt10 <<< words) $ lines input
|
||||
let result = case datums of
|
||||
[left, right] -> sum $ zipWith (\a b -> abs (a - b)) left right
|
||||
_ -> 0
|
||||
log $ "Part 1 ==> " <> show result
|
||||
|
||||
part2 :: String -> Effect Unit
|
||||
part2 input = do
|
||||
let datums = transpose $ map (Array.mapMaybe parseInt10 <<< words) $ lines input
|
||||
let Tuple left right = case datums of
|
||||
[left, right] -> Tuple left right
|
||||
_ -> Tuple [] []
|
||||
let result = sum $ map (\n -> n * countMatching (_ == n) right) left
|
||||
log $ "Part 2 ==> " <> show result
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in a new issue