diff --git a/2022/day14.hs b/2022/day14.hs new file mode 100644 index 0000000..726f672 --- /dev/null +++ b/2022/day14.hs @@ -0,0 +1,55 @@ +import Data.List.Split (splitOn) +import qualified Data.Set as S + +type Coord = (Int, Int) + +readCoord :: String -> Coord +readCoord s = read ("(" ++ s ++ ")") + +readLine :: String -> [Coord] +readLine xs = map readCoord (splitOn " -> " xs) + +interpolate :: Coord -> Coord -> S.Set Coord +interpolate (a,b) (x,y) + | a == x && b == y = S.singleton (a,b) + | a == x && b < y = S.insert (a,b) (interpolate (a,b+1) (x,y)) + | a == x && b > y = S.insert (a,b) (interpolate (a,b-1) (x,y)) + | a < x && b == y = S.insert (a,b) (interpolate (a+1,b) (x,y)) + | a > x && b == y = S.insert (a,b) (interpolate (a-1,b) (x,y)) + +interpolateLine :: [Coord] -> S.Set Coord +interpolateLine [x,y] = interpolate x y +interpolateLine (x:y:xs) = S.union (interpolate x y) (interpolateLine (y:xs)) + +part1 :: Coord -> S.Set Coord -> Int -> Int +part1 (x,y) occupied limit + | y > limit = 0 + | S.notMember (x,y+1) occupied = part1 (x, y+1) occupied limit + | S.notMember (x-1, y+1) occupied = part1 (x-1, y+1) occupied limit + | S.notMember (x+1, y+1) occupied = part1 (x+1, y+1) occupied limit + | otherwise = 1 + part1 (500,0) (S.insert (x,y) occupied) limit + +part2 :: Coord -> S.Set Coord -> Int -> Int +part2 (x,y) occupied limit + | S.member (500,0) occupied = 0 + | y+1 == limit+2 = 1 + part2 (500,0) (S.insert (x,y) occupied) limit + | S.notMember (x,y+1) occupied = part2 (x, y+1) occupied limit + | S.notMember (x-1, y+1) occupied = part2 (x-1, y+1) occupied limit + | S.notMember (x+1, y+1) occupied = part2 (x+1, y+1) occupied limit + | otherwise = 1 + part2 (500,0) (S.insert (x,y) occupied) limit + + + +main :: IO () +main = do + x <- map readLine . lines <$> getContents + let rocks = foldr1 S.union (map interpolateLine x) + + let start = (500,0) + let lowest = maximum (map snd (S.toList rocks)) + + putStr "part 1: " + print $ part1 (500,0) rocks lowest + + putStr "part 2: " + print $ part2 (500,0) rocks lowest \ No newline at end of file diff --git a/2022/inputs/day14 b/2022/inputs/day14 new file mode 100644 index 0000000..4094c1b --- /dev/null +++ b/2022/inputs/day14 @@ -0,0 +1,149 @@ +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +493,114 -> 498,114 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +513,145 -> 517,145 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +486,114 -> 491,114 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +471,169 -> 475,169 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +492,108 -> 497,108 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +477,165 -> 481,165 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +468,167 -> 472,167 +468,82 -> 480,82 +484,27 -> 501,27 -> 501,26 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +474,163 -> 478,163 +501,145 -> 505,145 +495,134 -> 500,134 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +500,114 -> 505,114 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +478,51 -> 478,52 -> 491,52 -> 491,51 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +504,117 -> 509,117 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +510,143 -> 514,143 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +459,169 -> 463,169 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +490,117 -> 495,117 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +496,138 -> 501,138 +474,167 -> 478,167 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +479,32 -> 479,33 -> 491,33 -> 491,32 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +483,117 -> 488,117 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +465,165 -> 469,165 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +504,143 -> 508,143 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +491,132 -> 496,132 +485,136 -> 490,136 +462,167 -> 466,167 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +503,138 -> 508,138 +468,163 -> 472,163 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +489,111 -> 494,111 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +480,167 -> 484,167 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +471,161 -> 475,161 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +484,27 -> 501,27 -> 501,26 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +492,136 -> 497,136 +499,136 -> 504,136 +497,117 -> 502,117 +477,169 -> 481,169 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +488,134 -> 493,134 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +478,51 -> 478,52 -> 491,52 -> 491,51 +482,138 -> 487,138 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +489,138 -> 494,138 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +507,141 -> 511,141 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +465,169 -> 469,169 +479,32 -> 479,33 -> 491,33 -> 491,32 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +507,145 -> 511,145 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +471,165 -> 475,165 +474,46 -> 474,36 -> 474,46 -> 476,46 -> 476,37 -> 476,46 -> 478,46 -> 478,44 -> 478,46 -> 480,46 -> 480,42 -> 480,46 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +494,23 -> 494,16 -> 494,23 -> 496,23 -> 496,16 -> 496,23 -> 498,23 -> 498,20 -> 498,23 -> 500,23 -> 500,20 -> 500,23 -> 502,23 -> 502,22 -> 502,23 -> 504,23 -> 504,14 -> 504,23 +479,32 -> 479,33 -> 491,33 -> 491,32 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +479,85 -> 479,89 -> 473,89 -> 473,95 -> 488,95 -> 488,89 -> 484,89 -> 484,85 +483,169 -> 487,169 +478,51 -> 478,52 -> 491,52 -> 491,51 +482,68 -> 482,72 -> 479,72 -> 479,76 -> 495,76 -> 495,72 -> 487,72 -> 487,68 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +474,158 -> 474,156 -> 474,158 -> 476,158 -> 476,157 -> 476,158 -> 478,158 -> 478,155 -> 478,158 -> 480,158 -> 480,154 -> 480,158 -> 482,158 -> 482,157 -> 482,158 -> 484,158 -> 484,154 -> 484,158 -> 486,158 -> 486,149 -> 486,158 +487,120 -> 487,124 -> 486,124 -> 486,129 -> 493,129 -> 493,124 -> 490,124 -> 490,120 +486,98 -> 486,101 -> 483,101 -> 483,105 -> 494,105 -> 494,101 -> 492,101 -> 492,98 +469,65 -> 469,55 -> 469,65 -> 471,65 -> 471,60 -> 471,65 -> 473,65 -> 473,58 -> 473,65 -> 475,65 -> 475,59 -> 475,65 -> 477,65 -> 477,56 -> 477,65 -> 479,65 -> 479,59 -> 479,65 -> 481,65 -> 481,59 -> 481,65 -> 483,65 -> 483,64 -> 483,65 +496,111 -> 501,111 diff --git a/2022/inputs/day14.test b/2022/inputs/day14.test new file mode 100644 index 0000000..4e87bb5 --- /dev/null +++ b/2022/inputs/day14.test @@ -0,0 +1,2 @@ +498,4 -> 498,6 -> 496,6 +503,4 -> 502,4 -> 502,9 -> 494,9