AoC/2021/day02/day02.hs
2021-12-05 21:00:32 +01:00

14 lines
425 B
Haskell

import Control.Arrow
main :: IO ()
main = do
input <- map (head . words &&& read . flip (:) [] . last) <$> lines <$> readFile "input"
print $ (\(x,y,z,d2) -> (x*y,x*d2)) $ day2 input (0,0,0,0)
day2 :: [(String,Int)] -> (Int,Int,Int,Int) -> (Int,Int,Int,Int)
day2 ((d,l):xs) (x,y,z,d2)
| d=="forward" = day2 xs (x+l,y,z,d2+l*z)
| d=="up" = day2 xs (x,y-l,z-l,d2)
| d=="down" = day2 xs (x,y+l,z+l,d2)
day2 [] x = x