From f5f0684acd547c1d8854faa9db910a93caf93191 Mon Sep 17 00:00:00 2001 From: opfez Date: Thu, 2 Dec 2021 07:46:27 +0100 Subject: [PATCH] day 2 --- day2/first.hs | 23 ++ day2/input | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++ day2/second.hs | 23 ++ 3 files changed, 1046 insertions(+) create mode 100644 day2/first.hs create mode 100644 day2/input create mode 100644 day2/second.hs diff --git a/day2/first.hs b/day2/first.hs new file mode 100644 index 0000000..99011c7 --- /dev/null +++ b/day2/first.hs @@ -0,0 +1,23 @@ +data Direction = Forward | Up | Down + deriving (Show, Eq) + +loop :: Integer -> Integer -> [(Direction, Integer)] -> Integer +loop horizontal depth [] = horizontal * depth +loop horizontal depth ((dir, mag):rest) = case dir of + Forward -> loop (horizontal + mag) depth rest + Up -> loop horizontal (depth - mag) rest + Down -> loop horizontal (depth + mag) rest + +-- helper functions + +stringToDirection :: String -> Direction +stringToDirection str = case str of + "forward" -> Forward + "up" -> Up + "down" -> Down + +convert :: [String] -> [(Direction, Integer)] +convert [] = [] +convert (a:b:rest) = (stringToDirection a, read b):convert rest + +main = interact $ show . loop 0 0 . convert . words diff --git a/day2/input b/day2/input new file mode 100644 index 0000000..7890315 --- /dev/null +++ b/day2/input @@ -0,0 +1,1000 @@ +forward 6 +forward 8 +down 6 +down 6 +forward 9 +down 7 +down 3 +forward 4 +forward 7 +up 3 +forward 9 +up 4 +forward 4 +down 3 +up 2 +forward 2 +down 4 +forward 9 +up 4 +forward 8 +up 9 +forward 3 +down 7 +down 4 +down 7 +up 5 +down 5 +down 5 +forward 5 +up 9 +down 5 +down 3 +up 3 +forward 2 +forward 2 +down 2 +forward 1 +down 4 +down 1 +down 6 +down 9 +forward 4 +forward 7 +down 4 +up 7 +forward 8 +down 3 +down 6 +down 5 +down 2 +down 1 +up 9 +forward 2 +forward 3 +up 3 +forward 5 +down 4 +up 3 +up 9 +forward 6 +up 5 +up 8 +up 8 +forward 6 +up 1 +forward 4 +down 4 +forward 9 +down 9 +down 7 +forward 5 +down 7 +forward 7 +up 2 +down 9 +down 2 +forward 8 +forward 9 +down 4 +down 4 +down 7 +down 4 +down 8 +forward 4 +down 9 +down 6 +forward 8 +down 8 +down 8 +forward 7 +up 9 +forward 7 +up 3 +down 5 +forward 9 +down 7 +down 5 +down 8 +forward 5 +down 1 +down 5 +down 5 +forward 8 +down 8 +up 8 +down 6 +down 3 +forward 1 +down 2 +down 3 +up 4 +forward 8 +down 6 +up 8 +forward 2 +forward 8 +forward 9 +forward 5 +forward 5 +forward 2 +forward 1 +down 8 +forward 8 +forward 9 +up 8 +up 8 +down 7 +down 5 +forward 1 +forward 1 +up 9 +up 3 +forward 5 +down 8 +down 4 +up 2 +down 7 +down 4 +down 3 +forward 3 +forward 7 +forward 3 +forward 1 +forward 8 +down 9 +up 4 +down 8 +down 3 +down 9 +up 8 +up 6 +up 9 +up 2 +down 9 +down 9 +down 6 +up 3 +down 4 +down 3 +down 9 +forward 2 +forward 2 +forward 7 +forward 9 +up 5 +up 8 +forward 8 +down 8 +up 7 +forward 4 +up 7 +up 7 +down 9 +down 7 +down 1 +forward 4 +forward 6 +up 4 +forward 7 +up 4 +down 6 +forward 2 +up 4 +forward 2 +up 2 +down 4 +down 2 +forward 4 +forward 8 +down 9 +up 7 +forward 3 +down 5 +down 2 +down 7 +up 9 +down 2 +up 5 +down 9 +down 4 +forward 8 +forward 9 +down 7 +up 3 +down 4 +up 3 +down 3 +down 3 +up 5 +forward 7 +down 8 +down 1 +up 7 +forward 8 +forward 9 +forward 3 +forward 1 +up 4 +forward 4 +down 6 +forward 3 +down 9 +forward 2 +up 8 +down 4 +forward 7 +forward 1 +up 9 +forward 6 +down 1 +down 8 +forward 7 +forward 8 +forward 2 +up 6 +forward 3 +forward 2 +forward 7 +down 6 +up 8 +down 2 +down 8 +forward 6 +forward 1 +up 9 +down 8 +down 4 +forward 3 +down 2 +forward 1 +forward 8 +down 9 +down 9 +forward 3 +down 5 +down 5 +down 1 +down 3 +up 3 +down 6 +forward 9 +forward 7 +up 5 +forward 8 +up 1 +up 4 +down 8 +up 3 +forward 1 +up 9 +forward 5 +down 8 +down 1 +up 3 +down 1 +down 7 +forward 2 +down 9 +forward 3 +down 2 +up 5 +down 5 +forward 9 +down 2 +down 3 +forward 4 +forward 2 +down 5 +forward 9 +down 5 +forward 9 +down 9 +down 8 +forward 8 +forward 9 +down 2 +forward 4 +forward 9 +up 1 +down 2 +down 5 +forward 8 +forward 5 +up 5 +forward 2 +up 8 +forward 3 +down 2 +forward 1 +forward 7 +forward 7 +forward 1 +up 9 +down 5 +down 3 +down 7 +forward 2 +up 5 +forward 1 +forward 7 +up 7 +down 3 +up 5 +down 1 +forward 9 +down 7 +forward 4 +forward 5 +down 1 +down 5 +up 7 +forward 1 +down 4 +down 8 +down 6 +forward 8 +forward 4 +forward 2 +up 8 +down 5 +down 2 +forward 2 +down 1 +down 8 +down 5 +forward 5 +forward 8 +down 9 +forward 1 +forward 3 +down 3 +down 1 +down 5 +forward 6 +forward 6 +down 3 +forward 5 +forward 8 +down 9 +down 9 +forward 4 +forward 4 +forward 1 +forward 7 +down 6 +up 2 +down 2 +up 6 +forward 7 +forward 8 +up 3 +down 7 +up 9 +down 5 +down 7 +down 7 +forward 3 +down 3 +up 9 +up 5 +forward 4 +down 7 +down 7 +forward 1 +down 1 +down 2 +forward 8 +down 9 +down 2 +forward 3 +forward 5 +down 4 +up 7 +forward 1 +forward 4 +forward 7 +forward 1 +up 1 +down 6 +forward 2 +down 1 +forward 2 +forward 7 +forward 7 +up 3 +down 8 +forward 6 +forward 1 +down 6 +down 8 +down 1 +up 3 +up 6 +down 6 +down 1 +up 8 +forward 6 +up 6 +forward 5 +up 4 +up 7 +up 4 +down 5 +forward 2 +forward 7 +down 1 +forward 6 +down 5 +up 3 +up 4 +forward 1 +up 4 +forward 7 +up 5 +up 1 +up 2 +forward 4 +forward 2 +forward 7 +down 6 +forward 1 +up 5 +up 2 +down 8 +forward 5 +up 2 +down 9 +up 4 +down 2 +down 1 +forward 8 +down 2 +up 8 +down 8 +up 7 +up 4 +up 2 +forward 8 +up 1 +up 6 +forward 8 +forward 8 +forward 2 +down 5 +up 2 +down 1 +forward 2 +up 5 +forward 4 +forward 9 +down 1 +down 6 +forward 4 +down 3 +down 7 +down 5 +down 6 +up 6 +forward 4 +down 2 +down 4 +down 3 +forward 3 +forward 2 +up 7 +forward 7 +forward 6 +forward 3 +forward 1 +forward 8 +forward 3 +forward 2 +forward 3 +forward 9 +down 3 +forward 9 +up 9 +up 1 +down 8 +down 2 +up 9 +down 8 +forward 5 +down 8 +up 8 +down 3 +up 7 +down 3 +down 7 +up 9 +up 8 +down 5 +down 1 +forward 1 +down 9 +forward 5 +down 1 +forward 5 +forward 6 +up 2 +forward 5 +down 2 +up 3 +forward 8 +forward 9 +down 1 +up 9 +forward 6 +down 9 +down 2 +forward 2 +forward 4 +forward 9 +forward 3 +down 6 +down 9 +forward 8 +forward 3 +down 9 +up 6 +forward 5 +forward 8 +down 7 +forward 9 +forward 5 +forward 4 +forward 3 +down 9 +forward 7 +forward 7 +forward 8 +down 7 +down 3 +up 5 +forward 2 +up 6 +down 6 +down 5 +up 2 +down 1 +forward 7 +forward 3 +down 2 +up 4 +forward 8 +down 8 +down 2 +forward 8 +up 8 +forward 1 +forward 1 +down 1 +forward 4 +forward 7 +forward 2 +forward 6 +down 9 +down 2 +up 7 +up 5 +forward 4 +down 3 +down 4 +up 7 +forward 7 +up 6 +forward 6 +up 4 +forward 5 +forward 7 +forward 3 +down 2 +forward 2 +forward 2 +up 1 +down 8 +up 7 +down 4 +down 9 +forward 2 +forward 9 +down 7 +down 4 +down 8 +forward 9 +up 1 +forward 6 +forward 7 +down 3 +forward 9 +forward 3 +down 3 +up 2 +down 8 +down 7 +forward 1 +down 9 +up 3 +forward 6 +forward 1 +forward 7 +down 3 +forward 2 +forward 1 +down 8 +down 7 +forward 1 +forward 5 +down 7 +up 7 +forward 4 +down 3 +forward 7 +forward 2 +up 2 +forward 1 +up 2 +up 6 +forward 3 +forward 2 +down 3 +down 7 +down 2 +down 9 +down 6 +forward 8 +down 4 +forward 6 +up 7 +down 8 +up 5 +down 8 +up 6 +down 2 +down 1 +forward 9 +forward 8 +down 6 +down 3 +up 8 +down 1 +forward 2 +down 6 +forward 4 +forward 9 +forward 6 +down 2 +down 9 +up 3 +forward 8 +forward 1 +forward 6 +forward 8 +forward 4 +forward 8 +up 7 +down 7 +forward 7 +down 6 +forward 1 +down 9 +forward 5 +down 3 +down 6 +down 6 +down 9 +forward 8 +forward 5 +down 4 +forward 1 +down 8 +down 5 +down 5 +down 9 +forward 1 +forward 1 +forward 9 +forward 5 +down 4 +forward 3 +down 2 +forward 3 +up 7 +down 2 +down 5 +down 4 +up 2 +forward 7 +down 3 +down 4 +down 8 +down 2 +forward 3 +up 8 +down 9 +down 1 +down 2 +forward 3 +down 1 +down 7 +down 9 +forward 9 +forward 7 +down 2 +down 5 +up 8 +forward 1 +forward 2 +forward 6 +up 3 +forward 3 +down 6 +forward 1 +up 8 +down 3 +down 1 +forward 6 +up 7 +forward 3 +down 5 +down 5 +up 8 +down 4 +forward 1 +up 5 +down 4 +forward 5 +up 6 +forward 2 +up 4 +forward 9 +forward 1 +forward 9 +forward 5 +forward 9 +up 2 +forward 8 +forward 6 +down 5 +forward 9 +forward 7 +down 1 +forward 7 +forward 7 +forward 3 +up 9 +down 2 +up 7 +down 1 +up 7 +forward 6 +forward 2 +forward 5 +forward 6 +down 4 +down 8 +forward 6 +down 1 +forward 7 +up 8 +forward 7 +up 5 +down 2 +forward 9 +forward 7 +forward 8 +up 2 +down 9 +forward 5 +forward 8 +forward 5 +forward 7 +down 8 +down 8 +up 4 +down 8 +up 2 +up 6 +down 2 +forward 2 +forward 9 +forward 8 +forward 3 +up 3 +up 1 +down 3 +forward 7 +down 2 +up 2 +forward 5 +down 3 +forward 2 +forward 4 +up 2 +down 1 +down 5 +up 6 +down 7 +up 7 +up 6 +forward 5 +down 7 +forward 9 +forward 2 +up 8 +down 1 +down 6 +forward 9 +down 8 +up 7 +down 6 +forward 9 +forward 2 +down 1 +up 4 +up 7 +down 7 +up 6 +forward 4 +up 1 +forward 5 +forward 9 +down 3 +up 2 +down 3 +up 7 +down 8 +forward 1 +down 9 +down 1 +down 9 +forward 8 +down 4 +down 7 +down 7 +forward 4 +up 5 +forward 1 +forward 7 +down 9 +forward 6 +up 8 +down 5 +down 8 +up 9 +forward 6 +down 1 +forward 8 +up 8 +up 1 +up 7 +down 9 +forward 8 +down 8 +forward 4 +down 1 +down 5 +forward 9 +down 7 +forward 3 +forward 1 +forward 2 +down 9 +up 2 +up 1 +forward 6 +up 1 +down 3 +forward 3 +down 7 +down 4 +forward 2 +forward 8 +forward 7 +down 6 +up 1 +forward 8 +down 8 +forward 5 +down 4 +forward 2 +up 8 +down 5 +down 9 +forward 1 +down 8 +down 5 +forward 6 +down 1 +down 6 +up 5 +up 8 +forward 7 +forward 4 +down 5 +down 1 +forward 4 +up 9 +forward 9 +up 7 +down 4 +forward 8 +forward 5 +up 8 +down 9 +up 8 +forward 7 +down 8 +forward 4 +down 8 +up 7 +forward 4 +down 9 +forward 5 +up 7 +forward 5 +forward 9 +down 6 +up 6 +forward 2 +down 4 +down 8 +forward 9 +forward 4 +forward 6 +up 6 +down 6 +forward 6 +forward 7 +forward 5 +forward 3 +forward 7 +up 3 +down 6 +forward 2 +down 9 +up 8 +down 2 +forward 7 +down 9 +down 3 +up 9 +up 6 +down 6 +forward 8 +up 2 +up 1 +down 5 +forward 4 +down 2 +up 2 +forward 2 +forward 3 +up 5 +down 6 +forward 9 +up 3 +forward 6 +forward 4 +down 3 +up 9 +forward 1 +up 6 +down 9 +down 7 +forward 5 +down 2 +down 6 +forward 5 +forward 1 +forward 5 +forward 8 +up 2 +forward 9 +down 8 +forward 2 +down 6 +down 1 +down 9 +forward 6 diff --git a/day2/second.hs b/day2/second.hs new file mode 100644 index 0000000..fcb2705 --- /dev/null +++ b/day2/second.hs @@ -0,0 +1,23 @@ +data Direction = Forward | Up | Down + deriving (Show, Eq) + +loop :: Integer -> Integer -> Integer -> [(Direction, Integer)] -> Integer +loop horizontal depth aim [] = horizontal * depth +loop horizontal depth aim ((dir, mag):rest) = case dir of + Forward -> loop (horizontal + mag) (depth + aim * mag) aim rest + Up -> loop horizontal depth (aim - mag) rest + Down -> loop horizontal depth (aim + mag) rest + +-- helper functions + +stringToDirection :: String -> Direction +stringToDirection str = case str of + "forward" -> Forward + "up" -> Up + "down" -> Down + +convert :: [String] -> [(Direction, Integer)] +convert [] = [] +convert (a:b:rest) = (stringToDirection a, read b):convert rest + +main = interact $ show . loop 0 0 0 . convert . words