From 6e39ba603f2a50b7b600f2daab8e0b84f3d48de4 Mon Sep 17 00:00:00 2001 From: Steph Date: Sat, 10 Dec 2022 00:17:47 +0100 Subject: [PATCH] Day 9.. Haven't finished part 1 yet, its too late --- 2022/aoc2022.cabal | 2 +- 2022/app/Day8/Main.hs | 2 +- 2022/app/Day9/Main.hs | 137 +++ 2022/app/Day9/example | 8 + 2022/app/Day9/input | 2000 +++++++++++++++++++++++++++++++++++++++++ 2022/app/Main.hs | 2 + 6 files changed, 2149 insertions(+), 2 deletions(-) create mode 100644 2022/app/Day9/Main.hs create mode 100644 2022/app/Day9/example create mode 100644 2022/app/Day9/input diff --git a/2022/aoc2022.cabal b/2022/aoc2022.cabal index 947b910..fb26da3 100644 --- a/2022/aoc2022.cabal +++ b/2022/aoc2022.cabal @@ -9,4 +9,4 @@ executable aoc2022 build-depends: base ^>=4.16.2.0, split ^>=0.2.3.5, regex-tdfa ^>=1.3.2, containers ^>=0.6.6 hs-source-dirs: app default-language: Haskell2010 - other-modules: Day1.Main Day2.Main Day3.Main Day4.Main Day5.Main Day6.Main Day7.Main, Day8.Main + other-modules: Day1.Main Day2.Main Day3.Main Day4.Main Day5.Main Day6.Main Day7.Main, Day8.Main, Day9.Main diff --git a/2022/app/Day8/Main.hs b/2022/app/Day8/Main.hs index ff8295b..7315cb6 100644 --- a/2022/app/Day8/Main.hs +++ b/2022/app/Day8/Main.hs @@ -1,4 +1,4 @@ -module Day8.Main where +module Day8.Main (main) where import System.IO import Data.List diff --git a/2022/app/Day9/Main.hs b/2022/app/Day9/Main.hs new file mode 100644 index 0000000..af1cb90 --- /dev/null +++ b/2022/app/Day9/Main.hs @@ -0,0 +1,137 @@ +module Day9.Main where + +import System.IO +import Data.List +import Data.List.Split + +main :: IO () +main = do + putStrLn "Day 9" + + handle <- openFile "app/Day9/example" ReadMode + contents <- hGetContents handle + + let r1 = part1 contents + putStrLn $ "part 1: " ++ show r1 + + let r2 = part2 contents + putStrLn $ "part 2: " ++ show r2 + +data Direction = DUp | DDown | DLeft | DRight + deriving (Show) + +data Heading = None | N | E | S | W | NE | SE | SW | NW + +type Motion = (Int, Direction) +type Point = (Int, Int) +type Rope = (Point, Point) -- head, tail + +instance Read Direction where + readsPrec _ "R" = [(DRight, "")] + readsPrec _ "L" = [(DLeft, "")] + readsPrec _ "U" = [(DUp, "")] + readsPrec _ "D" = [(DDown, "")] + +toMotion :: [String] -> Motion +toMotion (a:b:_) = (read b, read a) + +toHeading :: Rope -> Heading +toHeading ((hx,hy),(tx,ty)) + | hx == tx && + hy == ty = None + + | hx == tx && + hy < ty = S + | hx == tx && + hy > ty = N + | hy == ty && + hx < tx = W + | hy == ty && + hx > tx = E + + | hx < tx && + hy < ty = SW + | hx < tx && + hy > ty = NW + | hx > tx && + hy < ty = SE + | hx > tx && + hy > ty = NE + +parseData :: String -> [Motion] +parseData = (map toMotion) . (map (splitOn " ")) . lines + +expandMovement :: [Motion] -> [Direction] +expandMovement = concatMap (uncurry replicate) + +doMovement :: Rope -> Direction -> Rope +doMovement rope DUp = + case toHeading rope of + None -> ((hx, hy+1), (tx, ty)) + + N -> ((hx, hy+1), (tx, ty+1)) + E -> ((hx, hy+1), (tx, ty)) + S -> ((hx, hy+1), (tx, ty)) + W -> ((hx, hy+1), (tx, ty)) + + NE -> ((hx, hy+1), (tx+1, ty+1)) + SE -> ((hx, hy+1), (tx, ty)) + SW -> ((hx, hy+1), (tx, ty)) + NW -> ((hx, hy+1), (tx-1, ty+1)) + where + ((hx, hy), (tx, ty)) = rope + +doMovement rope DDown = + case toHeading rope of + None -> ((hx, hy-1), (tx, ty)) + + N -> ((hx, hy-1), (tx, ty)) + E -> ((hx, hy-1), (tx, ty)) + S -> ((hx, hy-1), (tx, ty-1)) + W -> ((hx, hy-1), (tx, ty)) + + NE -> ((hx, hy-1), (tx, ty)) + SE -> ((hx, hy-1), (tx+1, ty-1)) + SW -> ((hx, hy-1), (tx-1, ty-1)) + NW -> ((hx, hy-1), (tx, ty)) + where + ((hx, hy), (tx, ty)) = rope + +doMovement rope DLeft = + case toHeading rope of + None -> ((hx-1, hy), (tx, ty)) + + N -> ((hx-1, hy), (tx, ty)) + E -> ((hx-1, hy), (tx, ty)) + S -> ((hx-1, hy), (tx, ty)) + W -> ((hx-1, hy), (tx-1, ty)) + + NE -> ((hx-1, hy), (tx, ty)) + SE -> ((hx-1, hy), (tx, ty)) + SW -> ((hx-1, hy), (tx-1, ty-1)) + NW -> ((hx-1, hy), (tx-1, ty+1)) + where + ((hx, hy), (tx, ty)) = rope + +doMovement rope DRight = + case toHeading rope of + None -> ((hx+1, hy), (tx, ty)) + + N -> ((hx+1, hy), (tx, ty)) + E -> ((hx+1, hy), (tx+1, ty)) + S -> ((hx+1, hy), (tx, ty)) + W -> ((hx+1, hy), (tx, ty)) + + NE -> ((hx+1, hy), (tx+1, ty+1)) + SE -> ((hx+1, hy), (tx+1, ty-1)) + SW -> ((hx+1, hy), (tx, ty)) + NW -> ((hx+1, hy), (tx, ty)) + where + ((hx, hy), (tx, ty)) = rope + +part1 contents = path + where + steps = expandMovement $ parseData contents + step = take 2 steps + (final, path) = foldr (\m (r, ps) -> let (h,t) = doMovement r m in ((h,t), (t:ps))) (((0,0),(0,0)),[(0,0)]) steps +part2 contents = 1 diff --git a/2022/app/Day9/example b/2022/app/Day9/example new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/2022/app/Day9/example @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2 diff --git a/2022/app/Day9/input b/2022/app/Day9/input new file mode 100644 index 0000000..6eead55 --- /dev/null +++ b/2022/app/Day9/input @@ -0,0 +1,2000 @@ +R 1 +D 1 +L 1 +D 1 +L 2 +U 2 +D 2 +R 1 +D 1 +L 2 +R 1 +L 2 +R 2 +L 1 +R 2 +D 1 +R 1 +D 2 +U 1 +R 1 +D 2 +R 2 +L 1 +D 1 +R 2 +D 2 +R 1 +L 2 +D 1 +L 2 +D 2 +R 2 +D 2 +L 1 +D 1 +L 1 +D 1 +R 2 +L 2 +R 2 +D 2 +R 2 +D 2 +R 2 +L 2 +R 2 +U 1 +R 1 +D 2 +R 1 +L 1 +U 1 +L 2 +U 1 +D 1 +R 1 +U 1 +R 2 +D 2 +U 2 +D 2 +R 1 +L 1 +U 2 +L 2 +D 2 +L 1 +R 2 +D 1 +R 1 +L 2 +U 2 +R 1 +D 1 +U 2 +L 1 +U 2 +L 1 +R 2 +D 2 +R 1 +D 2 +R 1 +D 1 +R 1 +D 1 +L 2 +D 2 +R 2 +D 2 +R 1 +D 1 +R 2 +L 1 +U 2 +R 2 +D 1 +L 2 +U 1 +D 2 +L 2 +D 2 +L 2 +D 1 +R 1 +L 1 +U 2 +L 2 +D 1 +L 2 +U 1 +L 3 +D 1 +R 1 +U 3 +L 2 +U 1 +D 3 +L 1 +D 2 +R 1 +L 3 +D 2 +L 2 +D 1 +L 1 +R 2 +L 3 +D 2 +L 1 +U 3 +L 1 +R 3 +U 1 +R 3 +U 3 +D 1 +L 2 +U 2 +D 2 +U 3 +D 3 +L 1 +U 3 +D 3 +L 3 +R 1 +D 1 +U 2 +R 1 +U 3 +L 3 +D 2 +L 3 +D 1 +R 2 +U 1 +D 2 +L 3 +D 2 +U 2 +R 1 +L 3 +R 2 +L 2 +U 2 +R 2 +L 1 +D 1 +U 3 +D 1 +R 2 +L 1 +U 1 +R 1 +L 1 +D 2 +L 1 +D 1 +L 1 +D 3 +U 3 +D 3 +R 3 +D 2 +L 1 +R 1 +L 1 +D 3 +L 2 +D 1 +R 1 +D 3 +U 3 +L 2 +D 1 +U 1 +D 1 +U 3 +R 2 +L 1 +D 3 +U 3 +D 3 +U 2 +L 1 +R 1 +U 1 +D 3 +R 2 +U 1 +L 2 +U 1 +L 2 +U 2 +D 1 +L 3 +U 1 +R 1 +L 2 +U 1 +D 2 +L 1 +D 4 +L 3 +D 4 +R 2 +D 2 +L 3 +U 2 +L 3 +D 1 +L 4 +R 2 +D 1 +U 4 +L 3 +D 1 +R 1 +D 4 +R 4 +U 3 +D 3 +L 3 +D 3 +U 1 +R 4 +L 2 +D 1 +R 3 +L 4 +D 1 +R 2 +L 4 +U 3 +L 4 +R 1 +L 3 +D 1 +U 4 +L 4 +R 3 +U 4 +D 3 +U 2 +R 3 +D 1 +R 3 +L 3 +D 2 +U 4 +R 3 +U 4 +L 4 +R 4 +L 2 +R 2 +D 3 +L 2 +U 1 +L 4 +U 3 +R 3 +L 4 +U 1 +L 1 +U 1 +D 2 +R 1 +U 1 +L 3 +R 4 +L 2 +D 4 +R 3 +L 2 +R 1 +L 4 +R 1 +D 2 +R 4 +L 3 +U 3 +L 3 +D 1 +R 2 +L 4 +D 2 +R 3 +U 2 +D 3 +R 2 +U 4 +L 1 +U 2 +D 2 +L 1 +D 4 +R 3 +L 3 +R 4 +D 1 +U 2 +R 2 +D 1 +L 3 +U 2 +L 3 +R 1 +D 1 +R 4 +L 4 +R 1 +U 3 +R 4 +L 3 +D 3 +L 4 +R 4 +D 5 +R 2 +U 5 +L 1 +D 5 +L 5 +R 1 +L 5 +U 5 +L 3 +D 3 +L 2 +D 1 +L 1 +U 1 +L 1 +D 2 +L 3 +U 2 +D 3 +L 4 +R 5 +U 2 +L 3 +D 3 +R 4 +U 3 +D 5 +U 1 +R 3 +L 3 +D 1 +U 2 +L 3 +R 5 +D 2 +R 2 +U 4 +L 2 +R 4 +D 5 +R 2 +U 2 +D 5 +L 3 +R 2 +D 2 +L 1 +U 2 +R 1 +D 2 +U 1 +L 2 +U 5 +R 1 +U 4 +D 1 +R 4 +U 4 +R 3 +D 1 +U 2 +L 5 +U 1 +L 3 +D 1 +U 5 +D 5 +U 1 +L 3 +D 1 +R 2 +L 4 +R 4 +L 2 +U 2 +R 5 +U 1 +R 5 +L 1 +D 1 +R 3 +D 2 +R 4 +L 5 +D 3 +L 3 +U 5 +R 2 +D 5 +L 1 +U 2 +D 2 +U 4 +R 4 +L 4 +U 1 +D 1 +U 4 +R 4 +D 3 +L 4 +R 2 +D 3 +R 5 +U 4 +L 4 +R 4 +L 2 +U 4 +R 4 +D 1 +R 3 +D 6 +U 6 +D 5 +L 4 +R 2 +D 5 +R 5 +D 3 +R 3 +U 3 +D 3 +U 2 +L 2 +R 6 +L 6 +D 1 +L 4 +R 6 +D 5 +L 2 +R 4 +U 2 +L 5 +R 6 +U 6 +D 1 +U 3 +D 3 +R 1 +L 4 +D 2 +U 1 +L 2 +R 1 +D 3 +U 5 +R 1 +D 2 +U 5 +D 5 +R 3 +U 2 +D 4 +U 2 +R 5 +U 4 +R 2 +L 4 +U 5 +L 3 +D 1 +R 3 +U 3 +L 1 +U 1 +L 2 +R 5 +U 2 +D 4 +R 1 +D 5 +L 6 +R 6 +U 2 +D 4 +R 4 +D 4 +L 6 +D 3 +U 1 +L 4 +U 5 +R 3 +D 3 +R 6 +D 3 +R 6 +D 1 +L 3 +R 4 +D 5 +R 4 +D 6 +R 3 +U 6 +R 4 +U 1 +D 4 +L 2 +D 4 +L 2 +U 2 +R 4 +D 4 +L 1 +D 4 +U 4 +D 6 +U 3 +D 1 +L 2 +D 5 +R 2 +D 2 +L 5 +R 4 +L 5 +R 5 +U 6 +L 1 +R 3 +U 5 +D 1 +U 2 +R 2 +D 4 +R 4 +D 6 +R 4 +L 4 +D 2 +R 6 +L 1 +D 1 +U 3 +R 1 +D 4 +L 1 +D 3 +U 5 +R 2 +U 2 +D 6 +L 5 +U 4 +L 5 +R 3 +U 7 +R 2 +D 1 +R 6 +D 6 +U 6 +R 5 +D 5 +R 6 +D 6 +R 6 +D 5 +U 5 +D 7 +L 4 +U 3 +D 3 +U 2 +L 2 +U 4 +D 1 +R 7 +U 4 +L 1 +D 4 +L 3 +R 6 +L 1 +R 2 +L 4 +R 5 +U 6 +D 6 +U 2 +R 5 +U 4 +L 5 +U 3 +D 1 +L 6 +R 2 +D 2 +L 3 +U 5 +R 6 +U 7 +R 1 +L 7 +D 5 +U 5 +D 2 +R 4 +U 2 +L 7 +R 4 +D 7 +U 4 +D 3 +R 2 +D 3 +L 3 +U 6 +R 2 +L 6 +D 2 +R 6 +L 3 +R 4 +U 1 +D 3 +U 2 +L 4 +D 6 +U 7 +D 4 +L 3 +R 1 +U 6 +L 3 +R 3 +U 7 +R 7 +U 6 +L 1 +U 8 +L 1 +D 8 +L 6 +R 3 +L 7 +D 5 +U 8 +R 5 +L 4 +U 8 +L 3 +D 2 +U 1 +R 8 +D 8 +R 7 +U 1 +D 2 +R 6 +L 8 +D 5 +L 6 +U 1 +R 2 +U 6 +L 3 +D 6 +U 2 +R 2 +D 1 +U 4 +L 8 +D 8 +R 1 +L 2 +R 2 +D 7 +U 5 +D 8 +L 1 +R 7 +L 8 +D 2 +R 8 +D 7 +U 3 +R 3 +U 3 +D 1 +L 2 +U 6 +D 7 +U 8 +R 6 +D 6 +R 5 +U 7 +R 8 +L 1 +U 7 +D 2 +R 6 +U 7 +R 3 +D 3 +R 3 +U 4 +D 8 +L 7 +R 5 +U 1 +L 6 +R 8 +D 6 +R 4 +L 4 +D 1 +U 5 +L 6 +U 1 +D 8 +U 2 +R 4 +L 2 +R 8 +D 1 +R 1 +L 4 +R 7 +U 7 +D 8 +R 8 +L 6 +U 7 +L 4 +D 2 +R 2 +U 5 +D 1 +R 5 +L 6 +U 8 +L 1 +R 7 +D 8 +L 3 +D 2 +U 3 +D 3 +L 1 +R 3 +L 7 +D 6 +R 4 +D 1 +U 8 +L 3 +D 6 +L 7 +U 5 +R 6 +D 2 +L 4 +R 9 +D 2 +R 4 +D 6 +R 5 +L 7 +R 5 +U 7 +R 1 +L 5 +U 6 +R 4 +D 8 +U 5 +L 4 +U 1 +D 8 +U 9 +D 4 +U 7 +L 4 +R 8 +D 4 +R 4 +D 8 +R 1 +D 3 +R 5 +D 7 +U 8 +D 2 +R 2 +U 1 +L 1 +U 2 +L 9 +R 9 +D 1 +U 1 +D 8 +R 3 +L 8 +D 7 +U 9 +R 6 +L 4 +U 8 +D 4 +U 2 +L 3 +D 8 +L 2 +R 5 +U 4 +D 6 +U 6 +L 8 +R 7 +D 2 +R 3 +L 8 +U 9 +R 2 +U 4 +L 9 +R 5 +D 5 +R 4 +D 6 +R 3 +D 3 +R 8 +D 3 +R 4 +D 1 +U 2 +D 6 +R 4 +D 7 +U 5 +D 2 +R 6 +D 3 +U 3 +R 4 +U 5 +L 3 +U 5 +L 8 +D 3 +L 8 +D 5 +R 4 +L 8 +R 5 +U 8 +R 10 +D 2 +U 10 +R 1 +D 1 +L 4 +D 9 +L 6 +U 2 +R 3 +D 2 +L 6 +R 2 +L 10 +D 2 +L 10 +U 3 +L 2 +D 8 +U 10 +R 5 +L 1 +U 8 +R 9 +D 8 +U 2 +R 4 +U 3 +D 2 +U 4 +D 2 +R 3 +L 2 +U 4 +D 1 +U 9 +R 2 +U 1 +R 3 +D 3 +L 3 +R 2 +D 1 +U 8 +D 1 +L 5 +R 4 +L 8 +D 3 +L 1 +U 10 +R 9 +D 9 +U 9 +D 1 +R 6 +L 6 +U 6 +L 1 +D 5 +L 4 +U 8 +L 10 +U 9 +R 9 +D 5 +U 4 +D 7 +R 5 +U 10 +D 5 +U 1 +R 5 +L 7 +D 9 +R 5 +L 3 +U 2 +D 6 +R 4 +D 7 +U 4 +R 8 +L 5 +R 8 +L 9 +R 8 +D 1 +R 1 +L 9 +D 7 +L 10 +D 6 +R 8 +U 4 +D 4 +R 7 +L 9 +D 9 +R 9 +L 1 +R 6 +L 7 +R 10 +L 1 +U 9 +D 11 +R 4 +D 4 +U 5 +R 8 +U 9 +L 8 +D 8 +L 10 +U 10 +L 4 +D 1 +L 3 +U 7 +D 11 +U 4 +L 7 +R 2 +U 9 +D 4 +R 4 +U 1 +L 5 +U 10 +R 4 +D 3 +L 9 +R 2 +L 3 +U 5 +D 6 +U 2 +R 7 +D 7 +R 4 +L 8 +U 5 +R 1 +U 4 +D 3 +U 5 +R 9 +D 2 +R 4 +D 8 +U 9 +R 7 +U 5 +D 3 +R 6 +L 7 +U 7 +R 10 +L 3 +U 10 +L 8 +R 11 +L 3 +U 10 +R 5 +D 1 +U 7 +R 6 +U 9 +L 3 +R 9 +L 4 +R 9 +L 5 +R 9 +D 5 +U 8 +R 7 +L 7 +R 4 +L 9 +R 9 +D 7 +R 2 +L 3 +U 1 +L 1 +D 11 +U 3 +D 5 +R 3 +U 11 +L 1 +U 7 +R 8 +D 8 +U 7 +D 7 +R 6 +D 3 +R 8 +L 9 +U 10 +D 10 +L 1 +D 9 +L 1 +R 5 +D 6 +U 5 +L 1 +R 10 +L 1 +U 7 +D 11 +R 8 +U 11 +L 6 +R 4 +U 7 +R 3 +L 8 +D 8 +L 12 +U 3 +D 12 +L 6 +R 1 +U 8 +R 3 +U 4 +L 3 +D 10 +L 9 +D 6 +L 12 +R 11 +D 4 +U 4 +L 12 +R 1 +U 1 +D 10 +L 11 +R 3 +D 4 +R 4 +U 4 +D 3 +U 10 +R 9 +U 9 +L 1 +U 10 +D 11 +U 4 +D 3 +L 10 +R 5 +D 8 +R 5 +U 6 +R 12 +L 10 +U 10 +D 2 +L 6 +U 5 +D 3 +R 2 +D 3 +U 7 +D 1 +L 5 +U 9 +D 3 +U 10 +L 10 +U 4 +L 12 +R 11 +D 2 +L 10 +U 6 +L 4 +D 5 +R 3 +L 4 +D 8 +U 7 +R 12 +D 1 +U 5 +L 2 +D 7 +R 3 +U 1 +L 10 +R 9 +L 7 +R 8 +U 9 +R 9 +U 1 +L 7 +D 6 +L 1 +R 11 +L 9 +U 12 +R 8 +U 3 +R 5 +U 5 +L 12 +R 7 +L 8 +R 11 +L 4 +R 10 +D 2 +L 4 +U 12 +R 5 +D 1 +L 12 +D 1 +L 5 +D 3 +U 8 +L 5 +U 5 +R 7 +D 1 +L 3 +D 9 +L 12 +R 5 +D 12 +U 6 +L 7 +D 6 +L 5 +U 6 +R 7 +U 5 +D 8 +R 11 +D 12 +R 10 +L 11 +R 6 +L 13 +D 3 +L 2 +U 4 +D 12 +U 8 +D 6 +R 2 +D 2 +R 13 +U 1 +D 6 +R 8 +D 12 +L 8 +R 4 +L 7 +R 8 +D 9 +U 3 +L 1 +U 3 +L 10 +R 12 +U 13 +R 7 +U 1 +D 13 +U 6 +L 13 +D 11 +U 8 +L 10 +D 13 +R 11 +L 8 +D 5 +U 11 +R 1 +D 9 +L 4 +D 12 +R 13 +L 11 +D 7 +L 9 +U 8 +L 13 +D 11 +L 10 +R 4 +U 4 +D 4 +L 5 +D 7 +L 12 +U 10 +R 3 +L 10 +U 2 +L 2 +R 8 +L 6 +U 11 +L 4 +D 4 +U 9 +L 1 +R 12 +D 12 +R 13 +D 8 +R 8 +L 12 +U 5 +D 8 +L 7 +D 13 +U 12 +D 12 +R 10 +U 10 +R 13 +D 9 +R 3 +U 13 +L 12 +R 6 +U 14 +D 11 +R 14 +L 2 +R 5 +U 6 +R 10 +U 6 +L 3 +R 8 +U 7 +L 3 +D 4 +R 13 +L 10 +D 5 +U 10 +R 13 +L 6 +R 6 +L 1 +D 4 +U 10 +R 14 +U 7 +L 11 +R 14 +D 11 +R 8 +D 2 +U 13 +L 5 +R 10 +D 6 +U 7 +D 7 +L 6 +U 11 +L 4 +D 11 +L 9 +R 6 +L 5 +U 14 +R 2 +D 1 +U 12 +L 3 +U 3 +D 2 +U 3 +L 7 +U 10 +D 2 +R 9 +L 8 +U 10 +D 4 +R 7 +U 4 +L 8 +R 3 +L 6 +D 2 +R 11 +L 2 +D 12 +U 14 +L 1 +R 1 +U 12 +R 3 +L 14 +U 9 +D 7 +L 3 +U 8 +R 9 +L 4 +U 7 +D 4 +R 5 +D 7 +R 11 +L 13 +R 3 +D 10 +R 11 +U 6 +L 4 +D 9 +R 4 +U 5 +D 9 +R 13 +D 6 +R 11 +L 1 +D 1 +R 13 +U 4 +L 9 +U 14 +L 9 +R 2 +D 2 +L 7 +D 13 +L 11 +D 8 +R 4 +L 7 +R 4 +U 12 +D 5 +R 13 +D 14 +R 7 +U 6 +R 2 +U 13 +L 7 +U 14 +R 11 +U 15 +R 8 +U 7 +D 7 +L 5 +U 2 +D 13 +U 11 +L 12 +R 6 +D 13 +L 6 +U 8 +L 3 +R 15 +L 13 +D 1 +U 2 +L 14 +D 8 +L 4 +U 6 +R 11 +D 11 +R 2 +U 13 +L 13 +R 2 +U 15 +R 3 +D 4 +L 7 +R 7 +D 7 +R 7 +L 13 +R 10 +U 8 +R 13 +L 2 +U 13 +D 8 +U 15 +L 4 +D 13 +R 13 +U 8 +R 3 +L 11 +R 12 +U 2 +L 13 +U 1 +L 9 +U 11 +D 14 +R 12 +D 6 +U 6 +D 12 +U 8 +R 3 +U 4 +R 8 +U 2 +D 5 +L 12 +U 14 +D 4 +R 1 +U 10 +L 10 +R 6 +D 13 +U 11 +D 11 +U 11 +R 14 +D 15 +L 11 +U 14 +D 7 +L 12 +D 3 +L 14 +U 7 +R 1 +U 5 +L 1 +R 15 +U 13 +D 7 +R 9 +L 15 +U 15 +L 15 +D 7 +R 15 +D 3 +U 5 +L 8 +R 13 +L 15 +D 8 +L 15 +D 12 +L 5 +D 14 +U 16 +R 11 +L 14 +R 6 +L 10 +U 11 +R 8 +U 16 +L 6 +U 9 +L 13 +D 14 +R 7 +D 10 +L 15 +D 1 +L 10 +D 1 +R 2 +U 15 +L 9 +U 6 +D 3 +L 8 +D 13 +U 16 +D 12 +R 2 +L 1 +D 8 +L 15 +R 14 +D 8 +L 9 +U 12 +R 3 +U 15 +D 10 +U 13 +R 8 +L 15 +D 9 +R 8 +L 9 +U 2 +R 7 +L 11 +R 3 +D 13 +U 16 +L 9 +U 6 +L 7 +U 4 +L 16 +U 16 +L 12 +U 9 +R 8 +D 13 +L 2 +R 15 +D 7 +U 15 +D 16 +R 12 +L 12 +U 8 +L 8 +D 3 +R 16 +L 3 +U 13 +R 1 +L 5 +R 10 +U 13 +D 7 +R 3 +D 10 +L 2 +R 1 +U 4 +L 13 +U 15 +R 4 +D 1 +R 2 +L 5 +D 3 +L 1 +R 4 +L 1 +U 1 +D 7 +R 9 +L 12 +R 13 +D 5 +R 5 +D 9 +L 15 +R 17 +D 4 +R 2 +U 1 +D 1 +R 3 +L 15 +D 10 +L 8 +U 16 +L 14 +U 12 +R 5 +L 13 +D 10 +L 15 +D 12 +U 4 +D 8 +R 9 +L 17 +D 17 +U 3 +D 2 +L 14 +D 12 +L 5 +D 9 +L 3 +R 10 +U 1 +R 9 +U 16 +L 14 +R 13 +L 11 +R 4 +U 2 +L 10 +D 6 +R 5 +D 17 +L 15 +R 12 +U 15 +L 9 +U 9 +D 3 +R 8 +U 6 +R 8 +U 9 +D 14 +R 7 +U 1 +L 3 +R 3 +D 2 +U 4 +R 5 +L 17 +D 16 +U 13 +D 5 +U 6 +R 2 +U 5 +D 7 +U 11 +R 6 +L 17 +R 4 +L 14 +D 3 +U 15 +L 5 +R 4 +U 1 +D 16 +L 16 +U 10 +L 10 +D 17 +R 6 +D 2 +U 10 +L 10 +D 12 +R 15 +L 4 +R 11 +L 17 +U 15 +L 8 +U 8 +L 16 +D 6 +L 7 +U 17 +L 14 +D 6 +L 5 +R 14 +U 5 +D 1 +U 2 +D 17 +R 14 +L 1 +R 4 +D 7 +L 8 +U 7 +D 6 +L 16 +U 5 +D 7 +R 7 +D 17 +L 16 +R 1 +D 5 +U 17 +L 2 +U 7 +L 16 +U 15 +L 17 +D 3 +L 2 +R 7 +L 11 +R 1 +L 16 +U 2 +L 1 +R 18 +U 5 +L 9 +U 4 +D 8 +U 4 +L 18 +D 17 +L 14 +D 2 +R 1 +U 13 +L 9 +R 14 +D 14 +U 12 +D 14 +L 2 +U 10 +D 11 +R 10 +L 9 +U 7 +D 12 +L 4 +D 2 +R 17 +D 1 +U 15 +R 14 +D 16 +L 1 +R 11 +U 9 +R 8 +U 6 +D 7 +U 7 +L 2 +D 10 +U 9 +D 9 +L 11 +D 11 +L 14 +U 16 +D 11 +L 17 +R 5 +L 13 +U 16 +R 16 +U 18 +D 1 +R 1 +U 13 +R 6 +L 7 +U 11 +D 12 +L 8 +U 17 +D 11 +U 8 +L 14 +U 17 +L 4 +U 18 +D 18 +R 8 +D 13 +L 10 +U 3 +R 9 +L 14 +R 7 +U 14 +R 14 +L 9 +U 5 +R 4 +D 13 +U 10 +D 1 +R 10 +D 4 +R 3 +U 14 +D 10 +U 12 +L 11 +U 9 +L 16 +R 5 +L 14 +D 4 +U 11 +L 2 +R 10 +U 8 +D 9 +L 2 +R 16 +L 1 +R 12 +U 7 +D 11 +U 18 +D 4 +R 8 +U 18 +D 5 +R 15 +U 16 +L 2 +D 15 +U 5 +D 10 +U 18 +L 7 +U 4 +R 2 +U 17 +L 2 +R 3 +D 2 +L 2 +U 3 +R 10 +L 8 +U 4 +L 18 +U 6 +D 11 +R 13 +D 9 +U 10 +L 16 +R 15 +L 4 +D 1 +L 5 +D 7 +U 18 +L 5 +R 7 +L 15 +U 4 +L 6 +U 19 +D 19 +L 2 +R 2 +L 19 +D 9 +L 14 +U 18 +D 12 +R 19 +U 15 +L 16 +U 9 +L 11 +R 5 +L 14 +R 16 +U 19 +D 7 +U 8 +R 6 +U 14 +R 17 +D 9 +L 5 +U 3 +D 9 +U 8 +L 4 +U 12 +D 12 +R 13 +U 3 +R 18 +U 5 +L 12 +U 4 +L 1 +D 14 +R 5 +L 19 +U 17 +R 18 +D 11 +L 4 +U 18 +L 9 diff --git a/2022/app/Main.hs b/2022/app/Main.hs index 278f071..b934eb1 100644 --- a/2022/app/Main.hs +++ b/2022/app/Main.hs @@ -8,6 +8,7 @@ import qualified Day5.Main as Day5 import qualified Day6.Main as Day6 import qualified Day7.Main as Day7 import qualified Day8.Main as Day8 +import qualified Day9.Main as Day9 main :: IO () main = do @@ -19,3 +20,4 @@ main = do Day6.main Day7.main Day8.main + Day9.main