From 418c7f13fbb64162135bcc6dfd0890758572d6cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 3 Dec 2021 03:35:15 +0000 Subject: [PATCH] Complete part 1 of day 2 puzzle --- 2/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++ 2/navigator.hs | 25 + 2/sampleinstructions.txt | 6 + 3 files changed, 1031 insertions(+) create mode 100644 2/input.txt create mode 100644 2/navigator.hs create mode 100644 2/sampleinstructions.txt diff --git a/2/input.txt b/2/input.txt new file mode 100644 index 0000000..bd4d307 --- /dev/null +++ b/2/input.txt @@ -0,0 +1,1000 @@ +forward 2 +down 4 +down 3 +up 4 +down 1 +down 8 +up 9 +forward 1 +down 9 +forward 6 +down 7 +forward 1 +down 1 +up 2 +forward 8 +down 3 +down 9 +down 3 +down 8 +forward 3 +forward 5 +up 8 +forward 6 +forward 5 +forward 6 +forward 4 +up 3 +forward 1 +up 4 +forward 2 +up 2 +up 2 +down 6 +forward 3 +forward 4 +forward 5 +forward 1 +down 1 +down 1 +forward 3 +forward 2 +up 7 +forward 6 +down 5 +forward 9 +up 4 +down 6 +up 8 +forward 7 +forward 5 +forward 8 +down 5 +down 9 +forward 3 +forward 2 +forward 9 +forward 1 +down 3 +forward 1 +down 9 +forward 4 +forward 3 +forward 7 +forward 6 +forward 6 +forward 6 +forward 8 +forward 5 +forward 4 +up 1 +forward 8 +forward 1 +down 7 +forward 2 +up 9 +forward 4 +up 7 +down 4 +down 3 +down 9 +down 7 +down 1 +forward 2 +up 6 +down 2 +down 3 +down 5 +forward 6 +forward 5 +forward 6 +forward 2 +forward 1 +forward 5 +forward 5 +down 9 +forward 8 +forward 3 +down 8 +up 2 +forward 5 +forward 6 +down 1 +down 7 +down 5 +forward 3 +down 9 +down 2 +forward 6 +forward 6 +forward 4 +up 5 +up 2 +up 2 +up 2 +forward 2 +up 3 +down 4 +forward 2 +down 6 +forward 1 +down 8 +up 6 +up 9 +forward 7 +forward 5 +forward 9 +forward 5 +up 3 +up 6 +up 3 +forward 9 +forward 7 +up 7 +forward 3 +forward 3 +down 5 +down 2 +down 1 +down 8 +up 7 +down 2 +up 4 +forward 5 +down 5 +down 8 +down 4 +down 8 +down 4 +down 8 +down 2 +forward 5 +down 9 +forward 6 +forward 5 +up 4 +up 2 +down 7 +down 9 +forward 6 +forward 6 +down 3 +up 9 +up 8 +down 4 +forward 9 +down 7 +down 4 +down 6 +down 4 +down 7 +down 2 +up 9 +forward 9 +forward 6 +down 6 +up 6 +down 7 +down 5 +forward 9 +down 9 +down 8 +down 6 +down 3 +forward 5 +down 5 +forward 2 +up 4 +down 5 +forward 6 +forward 6 +forward 6 +down 4 +down 8 +down 3 +down 5 +forward 6 +forward 2 +forward 4 +forward 2 +forward 3 +up 9 +forward 8 +down 5 +down 9 +forward 5 +forward 7 +down 5 +down 2 +up 3 +forward 4 +forward 4 +up 4 +forward 5 +forward 8 +up 4 +forward 3 +down 8 +up 8 +forward 9 +up 9 +forward 5 +forward 8 +down 8 +up 9 +up 2 +forward 3 +forward 7 +down 9 +down 6 +forward 5 +down 1 +forward 6 +forward 8 +up 2 +down 8 +forward 2 +forward 7 +down 7 +down 7 +down 7 +down 3 +up 6 +down 5 +down 4 +forward 1 +forward 3 +down 3 +down 1 +forward 7 +forward 8 +up 8 +forward 3 +forward 8 +up 9 +down 5 +down 9 +forward 4 +down 9 +up 8 +up 1 +forward 6 +down 2 +up 2 +down 3 +up 1 +down 7 +down 8 +forward 6 +forward 8 +up 5 +up 2 +down 1 +forward 6 +down 1 +up 6 +down 9 +down 8 +down 5 +down 7 +forward 8 +down 1 +up 5 +down 2 +down 5 +forward 9 +up 8 +down 6 +forward 7 +forward 8 +down 5 +forward 3 +forward 4 +up 1 +forward 2 +forward 9 +up 7 +down 9 +forward 2 +down 3 +down 6 +down 9 +forward 4 +up 3 +forward 3 +down 6 +forward 1 +down 3 +down 4 +down 8 +down 5 +forward 6 +down 7 +forward 6 +up 8 +forward 9 +down 3 +forward 8 +forward 9 +down 3 +forward 9 +forward 4 +forward 2 +down 4 +down 1 +forward 3 +forward 3 +forward 3 +down 1 +down 6 +up 1 +down 6 +forward 2 +down 6 +down 4 +down 4 +forward 5 +down 4 +up 4 +up 7 +down 4 +forward 4 +down 8 +down 5 +down 2 +down 3 +forward 3 +down 4 +forward 8 +down 4 +down 2 +up 2 +down 8 +forward 9 +down 1 +up 1 +down 8 +down 8 +up 2 +down 8 +up 2 +forward 4 +down 2 +forward 8 +down 1 +down 9 +forward 3 +up 5 +down 8 +down 2 +forward 5 +forward 1 +forward 6 +forward 1 +down 8 +forward 3 +down 5 +up 7 +down 8 +forward 5 +down 8 +forward 2 +down 6 +down 9 +forward 9 +down 8 +forward 7 +forward 1 +forward 9 +forward 8 +forward 2 +down 4 +forward 8 +up 7 +down 2 +down 6 +forward 5 +forward 4 +down 5 +down 2 +forward 2 +up 8 +up 4 +down 8 +forward 2 +up 3 +forward 3 +down 4 +forward 8 +forward 7 +forward 4 +up 1 +down 6 +forward 1 +down 3 +forward 6 +up 3 +forward 7 +down 6 +forward 7 +forward 5 +forward 8 +down 9 +up 7 +down 1 +down 5 +forward 1 +down 8 +down 1 +forward 4 +forward 5 +forward 5 +down 9 +forward 9 +down 4 +forward 1 +up 8 +down 5 +down 9 +down 3 +down 2 +down 5 +down 3 +forward 7 +up 3 +forward 3 +down 4 +up 5 +forward 4 +up 6 +down 4 +forward 2 +up 3 +down 2 +up 1 +up 7 +down 5 +up 3 +forward 5 +up 2 +down 9 +down 6 +forward 5 +up 3 +down 7 +up 1 +forward 1 +forward 3 +down 9 +down 1 +forward 6 +down 5 +forward 8 +down 1 +down 5 +up 6 +forward 8 +forward 8 +forward 9 +down 1 +down 6 +down 8 +up 1 +down 7 +forward 3 +forward 5 +forward 2 +down 4 +forward 4 +forward 2 +down 8 +up 2 +down 1 +up 9 +down 4 +up 9 +down 2 +forward 5 +forward 4 +forward 7 +down 8 +forward 4 +down 5 +forward 7 +forward 2 +down 6 +down 3 +forward 7 +forward 8 +forward 2 +down 3 +forward 4 +down 6 +forward 4 +forward 3 +down 3 +forward 3 +down 8 +down 2 +forward 6 +down 4 +down 9 +down 2 +down 7 +forward 4 +forward 1 +forward 7 +down 9 +down 5 +forward 5 +up 7 +forward 4 +down 1 +up 3 +down 5 +down 3 +down 7 +down 7 +down 7 +up 6 +forward 3 +down 6 +down 3 +up 2 +down 7 +forward 5 +forward 5 +down 6 +forward 9 +up 2 +forward 6 +forward 3 +forward 5 +forward 9 +forward 1 +up 4 +up 7 +down 8 +down 3 +forward 1 +down 6 +up 8 +down 7 +down 8 +down 9 +down 9 +forward 5 +down 6 +up 7 +down 3 +down 5 +down 5 +down 6 +up 3 +forward 8 +down 4 +up 8 +forward 4 +down 1 +up 8 +up 5 +down 4 +up 8 +forward 8 +forward 7 +up 3 +down 7 +forward 8 +down 1 +down 7 +down 5 +down 5 +down 2 +up 3 +forward 3 +forward 8 +down 4 +down 3 +up 7 +down 1 +down 9 +forward 9 +forward 1 +forward 1 +forward 2 +down 7 +down 9 +up 5 +down 1 +forward 4 +forward 9 +forward 3 +forward 3 +forward 4 +forward 1 +down 2 +down 2 +up 1 +forward 7 +forward 8 +forward 6 +up 6 +down 5 +forward 2 +down 4 +forward 5 +forward 2 +forward 7 +down 1 +down 9 +forward 2 +forward 2 +forward 3 +up 2 +up 2 +up 2 +down 5 +forward 5 +forward 9 +down 4 +down 2 +down 5 +down 9 +up 7 +forward 2 +forward 7 +forward 4 +forward 5 +down 5 +down 8 +down 9 +down 4 +up 8 +up 1 +forward 8 +up 2 +up 8 +up 4 +forward 1 +forward 4 +down 9 +up 1 +down 8 +down 4 +down 4 +down 2 +down 9 +forward 7 +up 1 +down 4 +forward 4 +down 8 +forward 1 +forward 8 +forward 1 +up 7 +forward 4 +forward 6 +forward 2 +forward 8 +up 4 +down 1 +up 7 +up 8 +down 9 +forward 3 +down 3 +forward 6 +forward 5 +up 1 +forward 9 +up 6 +up 1 +forward 1 +forward 2 +forward 7 +down 8 +up 4 +forward 4 +down 3 +down 3 +forward 2 +forward 6 +down 4 +forward 2 +forward 8 +up 5 +down 1 +forward 7 +up 6 +forward 2 +down 6 +forward 7 +down 2 +down 9 +down 1 +up 4 +up 8 +down 7 +up 6 +forward 3 +forward 4 +down 6 +forward 5 +down 3 +up 6 +down 3 +down 7 +forward 7 +up 3 +down 1 +forward 2 +up 2 +up 6 +up 1 +up 8 +up 3 +down 9 +down 8 +forward 6 +up 9 +down 1 +forward 5 +down 4 +up 7 +down 5 +up 1 +down 9 +down 8 +down 2 +down 1 +up 8 +up 7 +up 5 +down 5 +forward 1 +forward 6 +down 4 +down 3 +forward 5 +forward 5 +up 5 +down 6 +down 6 +down 2 +down 7 +up 1 +up 9 +up 4 +down 7 +up 5 +forward 5 +forward 6 +forward 6 +down 7 +down 6 +up 8 +forward 8 +forward 1 +down 6 +up 2 +forward 8 +down 7 +down 5 +up 1 +up 7 +up 2 +up 3 +down 3 +forward 1 +forward 4 +up 8 +forward 9 +down 1 +up 4 +forward 3 +down 9 +down 9 +forward 4 +down 8 +up 2 +forward 1 +forward 3 +up 5 +forward 5 +up 4 +forward 5 +forward 6 +forward 2 +forward 4 +up 5 +down 7 +up 1 +forward 7 +down 5 +forward 5 +down 5 +up 2 +down 3 +forward 6 +forward 5 +up 4 +up 5 +down 2 +forward 2 +down 2 +down 2 +up 8 +up 2 +down 7 +forward 3 +down 7 +down 7 +down 2 +up 5 +up 5 +forward 5 +up 5 +down 9 +down 1 +up 7 +up 5 +forward 5 +forward 1 +down 7 +down 8 +down 4 +forward 1 +down 2 +up 9 +forward 1 +forward 5 +forward 8 +down 7 +down 6 +up 2 +down 6 +forward 4 +down 9 +down 1 +down 9 +up 5 +up 1 +down 9 +forward 7 +up 4 +down 5 +up 1 +forward 2 +forward 2 +up 9 +forward 8 +up 4 +up 1 +up 6 +up 5 +down 5 +up 4 +up 1 +forward 9 +forward 3 +down 4 +down 9 +down 4 +forward 9 +down 2 +down 1 +up 9 +up 4 +forward 8 +forward 9 +forward 8 +up 4 +forward 6 +down 7 +down 6 +down 1 +forward 5 +forward 4 +up 4 +forward 4 +up 2 +forward 7 +forward 2 +down 2 +down 1 +up 5 +up 7 +down 5 +down 9 +up 1 +down 2 +forward 4 +forward 8 +up 1 +forward 7 +down 7 +forward 1 +down 2 +down 9 +forward 7 +forward 6 +forward 1 +forward 6 +forward 9 +up 8 +forward 4 +up 6 +forward 9 +forward 1 +forward 7 +forward 9 +down 9 +down 7 +down 6 +down 2 +down 4 +forward 9 +forward 4 +forward 6 +forward 1 +forward 3 +down 2 +forward 9 +down 9 +forward 8 +forward 7 +up 4 +forward 7 +forward 8 +up 4 +down 1 +up 3 +down 1 +down 9 +down 5 +down 2 +down 8 +down 3 +down 8 +forward 2 +forward 5 +down 5 +down 7 +forward 4 +up 6 +forward 5 +up 2 +up 6 +forward 6 +down 7 +down 8 +up 4 +up 9 +forward 7 +down 3 +forward 8 +forward 6 +up 3 +up 4 +down 1 +forward 2 +down 9 +down 1 +down 6 +down 5 +up 7 +forward 7 +down 6 +down 2 +down 5 +up 2 +forward 7 +forward 2 +down 6 +down 1 +forward 4 +up 9 +down 1 +down 7 +forward 1 diff --git a/2/navigator.hs b/2/navigator.hs new file mode 100644 index 0000000..05da590 --- /dev/null +++ b/2/navigator.hs @@ -0,0 +1,25 @@ +main :: IO () +main = do + instructions <- getContents + let + parsed = parseInstructions instructions + location = navigate parsed + solution1 = uncurry (*) location + print solution1 + +parseInstructions :: String -> [(Int, Int)] +parseInstructions instructions = + map parseLine (lines instructions) + where + parseLine line = case break (== ' ') line of + ("forward", distance) -> (read distance, 0) + ("down", distance) -> (0, read distance) + ("up", distance) -> (0, (-read distance)) + _ -> error "Invalid line" + +navigate :: [(Int, Int)] -> (Int, Int) +navigate instructions = + foldl1 sumTuples instructions + where + sumTuples :: (Int, Int) -> (Int, Int) -> (Int, Int) + sumTuples (a, b) (c, d) = (a + c, b + d) diff --git a/2/sampleinstructions.txt b/2/sampleinstructions.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/2/sampleinstructions.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2