14 lines
425 B
Haskell
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
|