diff --git a/day09/default.nix b/day09/default.nix new file mode 100644 index 0000000..69bc143 --- /dev/null +++ b/day09/default.nix @@ -0,0 +1,103 @@ +{ pkgs, lib }: + +with lib; + +let + mapDirectionStepsToHorizontalVertical = { direction, steps }: { + horizontal = if direction == "L" then steps else + if direction == "R" then -steps else 0; + vertical = if direction == "D" then steps else + if direction == "U" then -steps else 0; + }; + + scanl = f: x1: list: let + x2 = head list; + x1' = f x1 x2; + in if list == [] then [] else [x1'] ++ (scanl f x1' (tail list)); + + foldHeadPosition = + { x ? 0, y ? 0 }: + { horizontal, vertical }: { + x = x + horizontal; + y = y + vertical; + }; + + movements = pipe ./input.txt [ + fileContents + (splitString "\n") + (map (splitString " ")) + (map (x: { direction = head x; steps = toInt (elemAt x 1); })) + (map mapDirectionStepsToHorizontalVertical) + (scanl foldHeadPosition {}) + ]; + + abs = x: if x < 0 then -x else x; + + ropePieceLength = headPiece: tailPiece: let + deltaX = abs (headPiece.x - tailPiece.x); + deltaY = abs (headPiece.y - tailPiece.y); + in max deltaX deltaY; + + moveRopePiece = headPiece: tailPiece: { + x = if headPiece.x > tailPiece.x then tailPiece.x + 1 else + if headPiece.x < tailPiece.x then tailPiece.x - 1 else + tailPiece.x; + y = if headPiece.y > tailPiece.y then tailPiece.y + 1 else + if headPiece.y < tailPiece.y then tailPiece.y - 1 else + tailPiece.y; + }; + + moveRope = headToOverlap: rope: let + newHead = moveRopePiece headToOverlap (head rope); + moveIfNextPieceMoved = x: y: + if ropePieceLength x y > 1 + then moveRopePiece x y + else y; + newTail = scanl moveIfNextPieceMoved newHead (tail rope); + in [newHead] ++ newTail; + + moveRopeUntilHeadOverlapsAndReportLastPositions = headToOverlap: rope: let + newRope = moveRope headToOverlap rope; + nextIteration = moveRopeUntilHeadOverlapsAndReportLastPositions headToOverlap newRope; + in if head rope == headToOverlap + then { + inherit rope; + tailPositions = []; + } + else { + inherit (nextIteration) rope; + tailPositions = [(last newRope)] ++ nextIteration.tailPositions; + }; + + repeat = item: times: map (const item) (range 1 times); + + f = n: { rope ? (repeat { x = 0; y = 0; } n), tailPositions ? [{ x = 0; y = 0; }] }: newHeadPosition: let + newRope = moveRopeUntilHeadOverlapsAndReportLastPositions newHeadPosition rope; + in { + rope = newRope.rope; + tailPositions = tailPositions ++ newRope.tailPositions; + }; + + answer1 = pipe movements [ + (foldl (f 2) {}) + (x: x.tailPositions) + unique + length + toString + ]; + + answer2 = pipe movements [ + (foldl (f 10) {}) + (x: x.tailPositions) + unique + length + toString + ]; + +in pkgs.writeText "answers" '' + Task1: + ${answer1} + + Task2: + ${answer2} +'' diff --git a/day09/input.txt b/day09/input.txt new file mode 100644 index 0000000..b6c2ce5 --- /dev/null +++ b/day09/input.txt @@ -0,0 +1,2000 @@ +U 2 +D 2 +R 1 +D 2 +R 2 +D 2 +R 2 +D 1 +L 2 +U 2 +L 2 +R 1 +L 1 +U 1 +L 2 +D 1 +R 2 +D 1 +U 2 +R 2 +D 2 +U 2 +R 2 +L 1 +D 2 +R 2 +U 2 +R 1 +L 1 +U 2 +R 1 +U 2 +L 1 +R 2 +L 1 +R 1 +U 2 +L 2 +R 1 +D 2 +U 1 +R 1 +L 1 +U 2 +D 2 +U 2 +R 1 +D 1 +L 2 +U 1 +R 2 +L 2 +D 1 +U 2 +D 2 +R 2 +D 2 +R 2 +D 1 +R 1 +D 1 +U 2 +L 1 +R 2 +D 2 +L 2 +R 1 +L 2 +R 1 +D 1 +R 2 +D 2 +U 2 +L 2 +U 2 +R 1 +L 1 +D 2 +U 1 +D 2 +L 2 +D 1 +U 2 +R 1 +D 2 +L 2 +U 2 +D 2 +R 2 +L 1 +R 2 +L 1 +U 2 +L 2 +U 2 +R 1 +D 2 +U 1 +D 2 +R 2 +U 2 +D 1 +U 1 +L 1 +R 1 +U 2 +R 2 +D 1 +R 2 +L 1 +U 2 +L 2 +R 1 +D 1 +R 2 +U 3 +R 2 +D 1 +L 1 +U 2 +D 1 +U 2 +D 3 +U 2 +R 3 +L 3 +R 2 +L 1 +U 2 +L 2 +U 2 +D 1 +R 3 +U 2 +L 3 +R 3 +L 3 +D 3 +L 3 +U 3 +D 3 +L 3 +R 3 +D 1 +L 2 +D 1 +L 2 +D 1 +R 3 +L 3 +D 2 +R 3 +D 3 +R 2 +U 3 +R 3 +D 1 +U 2 +R 1 +D 2 +L 3 +U 3 +D 3 +R 2 +L 1 +D 2 +L 3 +R 2 +D 2 +L 3 +D 1 +R 2 +L 1 +R 3 +D 3 +U 3 +L 1 +D 2 +R 2 +U 1 +L 3 +R 1 +D 1 +U 3 +L 2 +D 1 +R 1 +D 2 +R 2 +U 2 +L 3 +U 1 +R 2 +U 3 +L 2 +U 1 +L 3 +R 3 +L 1 +R 1 +L 1 +U 2 +L 2 +D 2 +R 2 +D 1 +R 3 +L 3 +R 2 +D 3 +R 3 +L 3 +D 2 +U 2 +L 3 +U 3 +R 2 +D 1 +R 1 +L 1 +D 1 +U 1 +L 2 +D 3 +U 3 +D 1 +U 2 +D 2 +L 1 +R 2 +U 3 +D 2 +R 4 +D 1 +U 1 +R 3 +D 3 +U 1 +D 3 +U 1 +L 3 +R 4 +L 3 +U 2 +D 1 +L 4 +D 3 +R 3 +D 4 +U 2 +D 3 +L 3 +D 2 +R 2 +U 3 +D 4 +L 4 +D 4 +U 1 +L 3 +U 2 +L 4 +R 2 +L 3 +D 4 +L 4 +D 4 +L 1 +U 1 +D 1 +L 3 +U 2 +L 1 +R 1 +D 3 +R 3 +L 1 +U 2 +L 1 +U 3 +R 2 +L 3 +R 3 +U 1 +L 1 +R 3 +D 2 +U 1 +D 1 +U 1 +L 1 +R 3 +L 2 +U 2 +R 2 +U 3 +R 2 +U 2 +D 3 +R 1 +L 4 +R 2 +L 4 +U 1 +L 2 +R 2 +L 2 +U 4 +R 3 +U 3 +L 2 +U 3 +R 1 +L 4 +D 3 +R 4 +U 2 +L 2 +R 2 +D 2 +R 1 +U 1 +L 4 +R 2 +U 3 +R 2 +U 4 +L 3 +R 4 +D 1 +R 4 +L 2 +U 2 +R 5 +U 2 +D 2 +R 1 +U 1 +R 5 +L 2 +U 3 +D 1 +R 1 +L 3 +R 4 +L 1 +D 5 +R 1 +U 5 +L 4 +U 5 +D 1 +L 4 +R 3 +U 1 +R 1 +L 4 +R 5 +D 4 +R 1 +U 2 +R 5 +L 4 +R 1 +L 5 +D 4 +U 3 +R 1 +U 1 +R 1 +D 4 +U 3 +L 2 +R 1 +D 2 +L 4 +R 4 +L 1 +U 5 +D 3 +R 5 +D 1 +L 5 +R 3 +L 1 +R 2 +U 5 +D 4 +U 5 +L 5 +R 5 +U 5 +L 3 +D 3 +L 5 +U 1 +D 2 +L 2 +R 3 +D 3 +R 2 +U 1 +D 4 +L 4 +D 5 +L 1 +R 1 +U 5 +R 2 +U 2 +L 1 +U 4 +D 5 +R 1 +L 4 +D 1 +L 1 +U 3 +D 1 +R 2 +L 3 +D 4 +R 2 +L 4 +D 5 +U 3 +L 3 +U 4 +R 5 +L 3 +R 1 +U 3 +R 4 +D 4 +R 2 +D 3 +R 2 +U 1 +L 3 +U 1 +D 5 +L 1 +D 3 +L 4 +R 3 +D 6 +R 2 +D 5 +U 3 +L 2 +R 1 +D 6 +R 5 +L 5 +R 5 +L 3 +U 2 +R 1 +U 3 +R 6 +U 5 +D 1 +L 1 +U 3 +L 4 +U 5 +R 1 +L 2 +R 1 +U 2 +D 2 +L 4 +R 3 +D 3 +L 3 +D 6 +U 2 +L 3 +R 5 +U 4 +L 2 +R 2 +L 5 +D 5 +L 4 +D 4 +R 1 +L 5 +U 1 +L 6 +D 3 +R 6 +L 1 +R 6 +U 5 +R 4 +L 5 +D 5 +R 5 +U 6 +D 4 +U 6 +L 4 +U 4 +L 4 +R 1 +U 2 +R 2 +D 2 +L 5 +D 1 +R 5 +U 2 +D 1 +U 3 +D 4 +U 2 +R 6 +L 2 +R 3 +L 2 +D 1 +U 4 +L 1 +D 1 +U 2 +R 3 +L 4 +D 2 +R 6 +L 5 +U 5 +D 2 +L 3 +U 2 +R 3 +U 6 +R 5 +L 4 +R 1 +L 4 +U 5 +R 3 +U 4 +L 2 +U 5 +R 3 +U 3 +R 2 +U 2 +D 5 +U 4 +D 1 +R 6 +D 5 +L 2 +D 6 +U 2 +L 5 +R 7 +L 5 +U 5 +R 4 +U 4 +R 5 +U 7 +L 5 +U 5 +D 1 +U 2 +R 5 +D 4 +U 7 +R 7 +L 2 +U 4 +D 1 +U 4 +D 6 +U 5 +D 4 +L 6 +D 2 +L 5 +U 6 +D 3 +U 1 +R 6 +D 4 +U 7 +L 2 +R 4 +U 1 +D 6 +R 6 +D 7 +R 3 +U 5 +L 5 +U 2 +D 1 +L 1 +D 4 +L 5 +R 4 +U 6 +R 4 +D 2 +R 6 +D 5 +R 5 +L 6 +R 5 +D 6 +U 3 +D 6 +R 7 +D 6 +U 2 +R 4 +U 4 +L 1 +R 1 +L 6 +D 6 +R 6 +D 1 +U 2 +L 5 +D 2 +R 2 +L 1 +U 3 +R 1 +L 5 +D 7 +U 4 +L 5 +D 4 +R 7 +D 2 +L 7 +R 5 +L 2 +R 7 +D 6 +R 6 +U 1 +D 2 +U 3 +R 2 +L 4 +R 4 +D 6 +U 6 +L 3 +R 1 +U 3 +L 4 +D 6 +U 5 +D 2 +R 3 +D 4 +L 5 +D 5 +R 1 +D 2 +L 4 +U 2 +D 1 +L 7 +D 8 +L 8 +R 5 +U 2 +L 3 +R 1 +U 7 +L 8 +R 8 +D 4 +R 7 +U 7 +L 7 +U 1 +L 2 +D 4 +U 6 +R 8 +D 4 +L 5 +R 2 +D 8 +L 5 +D 1 +U 2 +R 5 +U 5 +R 1 +U 7 +D 1 +R 4 +D 8 +R 3 +L 2 +U 1 +L 5 +R 5 +U 6 +L 2 +U 3 +L 8 +U 8 +D 3 +U 4 +R 6 +U 3 +D 3 +L 4 +U 8 +R 7 +U 7 +R 8 +D 7 +L 6 +R 6 +D 7 +U 3 +D 1 +L 1 +U 7 +L 6 +U 3 +D 1 +U 7 +L 8 +R 5 +U 5 +L 6 +R 2 +D 7 +L 6 +D 3 +R 6 +D 5 +R 6 +L 4 +U 1 +L 2 +D 6 +R 5 +U 1 +D 5 +L 6 +D 8 +R 3 +D 7 +R 5 +D 8 +U 6 +D 2 +L 1 +U 4 +D 8 +U 1 +D 6 +L 2 +R 5 +U 3 +L 4 +U 2 +R 6 +U 6 +R 1 +D 8 +L 2 +U 5 +R 9 +D 5 +L 8 +D 5 +R 7 +D 2 +U 1 +R 4 +L 1 +D 9 +R 4 +U 5 +D 2 +U 7 +R 9 +D 9 +L 8 +U 1 +R 3 +L 5 +R 5 +D 4 +R 3 +D 3 +R 2 +U 3 +D 5 +L 8 +R 3 +U 8 +D 9 +U 1 +R 8 +D 6 +U 2 +L 6 +R 7 +L 1 +R 2 +L 4 +U 7 +R 8 +D 3 +R 4 +D 5 +L 4 +R 1 +D 4 +R 8 +U 1 +L 4 +R 8 +L 3 +U 3 +L 3 +U 7 +R 5 +U 5 +R 3 +U 3 +L 5 +R 8 +U 7 +L 9 +U 9 +D 8 +R 7 +L 2 +R 1 +D 9 +L 8 +D 6 +U 7 +R 6 +L 2 +U 7 +L 6 +R 4 +L 7 +R 3 +U 1 +L 2 +U 1 +D 8 +R 9 +D 3 +U 2 +L 5 +R 3 +D 5 +L 8 +U 1 +D 1 +L 6 +U 2 +R 4 +D 4 +R 2 +U 6 +L 4 +R 7 +D 8 +L 3 +D 5 +R 4 +D 7 +R 2 +U 9 +L 4 +R 4 +U 8 +L 9 +R 6 +D 3 +R 8 +D 1 +U 9 +R 7 +U 3 +L 2 +U 10 +D 7 +L 10 +R 7 +D 6 +U 9 +R 4 +D 8 +R 8 +L 4 +U 7 +L 9 +R 7 +U 6 +R 1 +L 1 +D 9 +L 4 +U 8 +L 9 +R 3 +L 1 +D 3 +L 7 +D 2 +U 7 +R 10 +L 7 +D 3 +R 5 +L 9 +D 1 +L 4 +R 1 +D 10 +U 10 +D 1 +L 1 +R 1 +D 8 +U 3 +R 4 +L 5 +U 6 +L 8 +U 9 +L 7 +D 10 +U 7 +L 3 +R 4 +D 7 +L 4 +D 1 +L 8 +R 6 +L 3 +R 5 +L 3 +R 2 +U 4 +L 5 +U 8 +R 9 +U 1 +R 7 +U 5 +L 5 +U 6 +L 4 +D 9 +L 6 +D 8 +U 10 +L 1 +D 8 +R 4 +L 6 +D 6 +U 5 +L 9 +D 6 +U 10 +L 5 +D 5 +R 5 +U 6 +L 4 +R 7 +L 2 +R 5 +L 1 +D 2 +R 3 +U 10 +L 5 +D 6 +U 7 +D 6 +L 4 +R 8 +D 1 +L 6 +U 2 +R 7 +L 3 +U 10 +D 11 +L 1 +D 7 +R 1 +U 8 +D 4 +R 3 +U 6 +D 5 +R 3 +D 9 +L 6 +D 5 +U 4 +R 2 +U 4 +D 9 +U 2 +L 2 +R 2 +D 8 +R 8 +L 3 +D 8 +R 9 +U 1 +D 11 +L 6 +U 3 +L 11 +D 5 +U 6 +D 5 +L 9 +U 11 +L 1 +D 1 +U 7 +D 2 +U 11 +L 10 +U 2 +R 1 +L 4 +D 2 +U 10 +D 2 +R 7 +L 2 +R 10 +U 10 +R 6 +L 7 +U 10 +D 10 +R 8 +U 3 +L 5 +D 10 +L 3 +D 4 +U 5 +L 8 +U 5 +D 10 +L 5 +D 9 +U 7 +L 3 +U 3 +L 6 +U 5 +R 11 +D 1 +U 5 +R 11 +D 5 +U 4 +D 1 +L 4 +D 6 +L 10 +R 8 +D 8 +R 3 +U 4 +D 1 +R 8 +U 9 +D 4 +R 1 +L 6 +D 9 +R 1 +L 2 +R 6 +D 8 +U 3 +R 6 +U 9 +R 2 +L 10 +U 10 +D 2 +L 5 +U 10 +R 4 +U 1 +R 2 +U 6 +D 8 +L 9 +D 5 +L 7 +D 12 +L 10 +R 9 +L 10 +U 3 +L 11 +R 5 +L 5 +D 12 +L 12 +R 11 +U 6 +R 10 +U 12 +L 11 +U 9 +L 12 +R 8 +D 2 +L 2 +U 11 +D 10 +L 9 +U 6 +L 3 +R 1 +D 4 +U 12 +L 6 +R 8 +U 3 +R 6 +L 10 +R 7 +U 4 +R 1 +U 1 +R 2 +L 3 +U 1 +D 1 +R 3 +D 7 +R 12 +D 1 +U 9 +R 2 +D 1 +U 1 +D 1 +L 3 +D 10 +L 8 +D 8 +U 12 +L 10 +R 3 +L 3 +D 2 +U 1 +R 10 +D 11 +U 9 +L 3 +U 5 +L 10 +R 9 +D 9 +L 12 +R 12 +D 9 +R 4 +D 2 +L 12 +U 9 +D 4 +U 9 +R 3 +L 9 +U 6 +L 6 +D 9 +U 6 +R 1 +U 4 +R 1 +L 7 +D 5 +U 7 +L 3 +R 1 +U 9 +R 7 +U 8 +R 3 +L 2 +D 12 +R 11 +D 2 +R 7 +U 7 +L 12 +R 9 +D 8 +U 7 +L 1 +D 1 +R 9 +L 2 +U 13 +R 7 +D 4 +U 3 +D 1 +L 4 +U 7 +L 5 +R 2 +U 8 +L 6 +R 13 +U 7 +D 10 +R 5 +U 5 +D 3 +R 13 +L 5 +R 1 +U 13 +D 3 +R 12 +U 10 +L 3 +R 12 +L 9 +U 7 +D 2 +L 7 +R 11 +D 3 +L 4 +D 11 +R 1 +L 9 +R 5 +D 1 +R 10 +L 2 +R 4 +D 8 +R 10 +D 9 +U 4 +D 5 +L 1 +D 7 +R 12 +D 13 +U 8 +R 4 +D 5 +L 9 +D 8 +U 3 +L 7 +D 8 +L 9 +R 11 +L 13 +R 8 +D 6 +L 13 +R 10 +D 7 +L 10 +R 8 +L 4 +U 6 +L 2 +R 5 +L 13 +U 2 +R 6 +U 8 +L 6 +D 7 +R 2 +U 2 +R 3 +U 9 +L 6 +U 1 +R 8 +D 13 +R 9 +L 10 +U 5 +L 9 +D 10 +R 3 +L 8 +R 1 +L 1 +D 1 +L 3 +R 5 +L 3 +R 10 +L 4 +U 7 +R 8 +D 2 +R 2 +D 2 +U 8 +R 12 +L 9 +D 12 +R 5 +L 4 +R 10 +D 2 +L 1 +D 6 +L 14 +U 13 +R 1 +U 13 +R 3 +U 9 +D 8 +U 13 +L 6 +R 7 +D 13 +U 7 +D 10 +U 1 +R 9 +U 3 +L 12 +R 7 +U 9 +D 13 +U 13 +L 8 +U 12 +D 14 +L 3 +D 5 +L 12 +U 12 +L 12 +D 4 +U 3 +L 2 +R 10 +U 10 +D 4 +L 5 +R 10 +U 13 +D 1 +U 7 +D 11 +U 11 +D 11 +L 7 +R 3 +L 10 +U 10 +R 10 +D 7 +R 9 +U 14 +R 7 +U 4 +R 4 +L 2 +D 9 +R 9 +D 4 +U 10 +D 3 +U 10 +L 5 +R 2 +L 3 +U 8 +R 1 +D 4 +L 6 +D 5 +R 14 +U 2 +D 14 +U 3 +D 2 +R 4 +U 2 +D 11 +U 6 +D 1 +U 13 +D 5 +L 14 +U 10 +L 12 +D 2 +R 12 +D 5 +R 1 +D 2 +U 5 +R 13 +U 2 +R 5 +U 10 +R 8 +U 11 +D 7 +U 13 +L 8 +U 13 +D 15 +L 3 +D 2 +U 9 +R 4 +U 11 +L 5 +R 6 +D 13 +L 13 +D 14 +R 8 +D 1 +L 10 +R 11 +L 7 +D 11 +R 9 +L 15 +D 7 +U 12 +D 7 +L 6 +U 15 +R 9 +U 2 +D 13 +R 5 +D 13 +R 9 +D 14 +R 1 +L 13 +U 7 +L 6 +D 8 +L 6 +D 5 +R 9 +U 12 +R 13 +D 13 +L 3 +U 4 +L 15 +D 7 +R 1 +L 5 +U 11 +D 6 +L 1 +U 12 +D 12 +U 14 +L 15 +R 14 +D 11 +U 9 +D 6 +L 3 +D 10 +R 6 +D 14 +R 10 +L 12 +D 9 +U 3 +D 15 +L 10 +D 1 +L 12 +R 12 +U 2 +D 8 +L 7 +D 4 +L 9 +U 5 +D 8 +L 8 +U 15 +L 1 +U 11 +L 1 +R 7 +L 9 +U 4 +D 8 +R 8 +L 15 +D 3 +R 5 +U 9 +L 14 +R 15 +L 7 +R 1 +L 1 +R 11 +D 13 +U 3 +L 7 +R 3 +L 3 +U 7 +R 7 +D 8 +R 5 +L 9 +R 2 +L 9 +R 11 +U 3 +L 10 +D 2 +L 14 +D 6 +U 10 +D 2 +U 15 +R 9 +L 7 +D 9 +L 14 +D 4 +R 3 +L 5 +D 13 +R 4 +L 10 +R 7 +L 12 +R 3 +D 14 +R 4 +L 13 +U 9 +D 15 +U 9 +D 7 +L 15 +D 1 +U 10 +D 1 +L 7 +R 9 +D 13 +L 11 +R 2 +D 7 +L 12 +R 1 +L 10 +D 7 +L 14 +U 8 +L 15 +R 15 +L 12 +R 14 +D 5 +R 9 +D 4 +L 15 +U 14 +L 12 +R 11 +D 9 +U 12 +L 11 +U 2 +D 10 +L 1 +D 11 +L 9 +R 2 +D 4 +R 7 +U 12 +L 14 +R 9 +L 15 +R 6 +L 1 +D 4 +R 14 +D 10 +L 12 +U 8 +L 15 +U 7 +L 4 +D 3 +L 14 +U 6 +L 6 +R 13 +D 12 +R 14 +D 14 +L 8 +D 3 +R 12 +L 4 +U 16 +R 7 +U 2 +D 12 +R 3 +D 15 +R 14 +D 8 +U 14 +D 7 +U 14 +D 8 +U 8 +R 1 +D 9 +L 5 +U 2 +L 11 +U 5 +L 14 +U 2 +D 7 +R 17 +U 5 +R 9 +D 8 +U 1 +R 1 +U 11 +L 5 +R 10 +U 16 +R 16 +L 5 +R 7 +U 6 +D 12 +L 16 +U 2 +D 4 +L 13 +R 9 +D 12 +R 11 +U 14 +D 16 +R 6 +D 2 +L 6 +D 5 +R 17 +D 17 +R 2 +U 10 +R 7 +L 12 +U 9 +R 5 +D 4 +R 17 +L 10 +U 13 +D 1 +U 3 +D 4 +L 6 +D 6 +L 9 +U 16 +L 6 +D 2 +U 10 +L 7 +D 6 +R 15 +D 15 +L 12 +D 1 +U 6 +R 3 +U 11 +R 8 +U 13 +D 14 +L 13 +R 9 +L 3 +U 4 +D 12 +U 11 +R 15 +L 3 +D 13 +L 5 +R 17 +D 12 +L 16 +U 6 +R 15 +D 6 +R 13 +D 13 +R 8 +D 7 +U 6 +D 11 +R 17 +U 15 +R 15 +L 1 +D 7 +U 12 +R 15 +L 17 +R 6 +U 1 +R 17 +L 5 +U 1 +L 14 +R 14 +L 5 +D 5 +R 2 +L 7 +U 7 +D 8 +L 17 +U 1 +R 16 +U 9 +L 13 +U 12 +R 2 +U 16 +D 8 +U 17 +L 10 +R 5 +U 11 +D 17 +L 15 +R 11 +U 7 +R 9 +L 4 +D 17 +L 2 +R 7 +D 17 +L 7 +U 12 +L 3 +U 13 +D 2 +L 8 +R 3 +D 17 +U 1 +R 17 +L 2 +U 17 +R 10 +U 1 +R 14 +U 8 +L 17 +D 3 +L 13 +D 10 +R 1 +L 11 +U 10 +L 14 +D 15 +R 14 +L 9 +U 1 +R 11 +L 13 +U 12 +L 9 +U 14 +L 12 +U 11 +L 6 +R 4 +D 2 +L 14 +R 13 +U 16 +L 2 +R 11 +D 18 +R 13 +U 3 +D 15 +L 3 +R 12 +U 10 +L 5 +R 3 +L 11 +U 14 +L 15 +R 3 +L 7 +D 5 +U 1 +R 6 +U 14 +D 17 +U 2 +D 15 +U 14 +D 1 +L 7 +D 1 +R 13 +L 9 +U 5 +L 2 +D 14 +U 14 +R 4 +U 14 +R 11 +U 8 +L 9 +D 15 +L 13 +U 17 +L 2 +U 1 +R 11 +U 7 +D 3 +U 8 +L 16 +D 3 +R 11 +L 17 +D 15 +R 16 +U 18 +D 8 +L 4 +U 2 +D 6 +R 15 +D 11 +L 12 +R 9 +D 18 +R 5 +D 1 +R 12 +L 5 +R 6 +L 6 +U 2 +L 15 +R 6 +L 16 +D 17 +U 11 +R 13 +L 10 +D 7 +L 15 +D 19 +R 17 +U 1 +R 19 +L 16 +U 18 +R 5 +L 6 +D 19 +L 1 +R 15 +L 16 +U 17 +D 18 +U 14 +L 19 +R 18 +L 12 +U 10 +D 2 +L 7 +R 1 +U 15 +L 1 +R 14 +U 10 +D 15 +U 4 +L 1 +U 11 +D 12 +U 7 +D 14 +R 14 +D 12 +L 17 +D 3 +R 6 +D 3 +R 4 +L 2 +R 5 +D 3 +L 10 +U 12 +L 12 +R 7 +D 12 +L 10 +R 10 +D 8 +L 13 +R 9 +U 18 +L 14 +R 1 +L 7 +D 18 +L 14 +U 11 +D 8 +R 13 +D 2 +R 10 +L 4 +R 1 +D 7 +U 18 +D 9 +L 5 +D 2 +U 2 +L 11 +R 2 +D 11 +L 13 +D 17 +L 7 +R 9 +L 9 +R 4 +D 7 diff --git a/flake.nix b/flake.nix index ff7513f..c8c46d1 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,7 @@ day06 = pkgs.callPackage ./day06 { }; day07 = pkgs.callPackage ./day07 { }; day08 = pkgs.callPackage ./day08 { }; + day09 = pkgs.callPackage ./day09 { }; day10 = pkgs.callPackage ./day10 { }; }; };