diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-12-20 11:01:17 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-12-20 11:01:17 +0800 |
commit | 9950ca0e4d9ce53077b7add28e9baead0b935d05 (patch) | |
tree | 71b023d46225a513ddffbc319aa73a092ab95484 /src | |
parent | 0cfd07586a4044dafb3614dfe8d966478abada34 (diff) | |
download | advent-of-code-9950ca0e4d9ce53077b7add28e9baead0b935d05.tar.gz advent-of-code-9950ca0e4d9ce53077b7add28e9baead0b935d05.zip |
2022 setup
Diffstat (limited to 'src')
44 files changed, 2834 insertions, 0 deletions
diff --git a/src/2022/day17/README.md b/src/2022/day17/README.md index e69de29..649ff8a 100644 --- a/src/2022/day17/README.md +++ b/src/2022/day17/README.md @@ -0,0 +1,332 @@ +--- Day 17: Pyroclastic Flow --- +Your handheld device has located an alternative exit from the cave for you and the elephants. The ground is rumbling almost continuously now, but the strange valves bought you some time. It's definitely getting warmer in here, though. + +The tunnels eventually open into a very tall, narrow chamber. Large, oddly-shaped rocks are falling into the chamber from above, presumably due to all the rumbling. If you can't work out where the rocks will fall next, you might be crushed! + +The five types of rocks have the following peculiar shapes, where # is rock and . is empty space: + +#### + +.#. +### +.#. + +..# +..# +### + +# +# +# +# + +## +## +The rocks fall in the order shown above: first the - shape, then the + shape, and so on. Once the end of the list is reached, the same order repeats: the - shape falls first, sixth, 11th, 16th, etc. + +The rocks don't spin, but they do get pushed around by jets of hot gas coming out of the walls themselves. A quick scan reveals the effect the jets of hot gas will have on the rocks as they fall (your puzzle input). + +For example, suppose this was the jet pattern in your cave: + +>>><<><>><<<>><>>><<<>>><<<><<<>><>><<>> +In jet patterns, < means a push to the left, while > means a push to the right. The pattern above means that the jets will push a falling rock right, then right, then right, then left, then left, then right, and so on. If the end of the list is reached, it repeats. + +The tall, vertical chamber is exactly seven units wide. Each rock appears so that its left edge is two units away from the left wall and its bottom edge is three units above the highest rock in the room (or the floor, if there isn't one). + +After a rock appears, it alternates between being pushed by a jet of hot gas one unit (in the direction indicated by the next symbol in the jet pattern) and then falling one unit down. If any movement would cause any part of the rock to move into the walls, floor, or a stopped rock, the movement instead does not occur. If a downward movement would have caused a falling rock to move into the floor or an already-fallen rock, the falling rock stops where it is (having landed on something) and a new rock immediately begins falling. + +Drawing falling rocks with @ and stopped rocks with #, the jet pattern in the example above manifests as follows: + +The first rock begins falling: +|..@@@@.| +|.......| +|.......| +|.......| ++-------+ + +Jet of gas pushes rock right: +|...@@@@| +|.......| +|.......| +|.......| ++-------+ + +Rock falls 1 unit: +|...@@@@| +|.......| +|.......| ++-------+ + +Jet of gas pushes rock right, but nothing happens: +|...@@@@| +|.......| +|.......| ++-------+ + +Rock falls 1 unit: +|...@@@@| +|.......| ++-------+ + +Jet of gas pushes rock right, but nothing happens: +|...@@@@| +|.......| ++-------+ + +Rock falls 1 unit: +|...@@@@| ++-------+ + +Jet of gas pushes rock left: +|..@@@@.| ++-------+ + +Rock falls 1 unit, causing it to come to rest: +|..####.| ++-------+ + +A new rock begins falling: +|...@...| +|..@@@..| +|...@...| +|.......| +|.......| +|.......| +|..####.| ++-------+ + +Jet of gas pushes rock left: +|..@....| +|.@@@...| +|..@....| +|.......| +|.......| +|.......| +|..####.| ++-------+ + +Rock falls 1 unit: +|..@....| +|.@@@...| +|..@....| +|.......| +|.......| +|..####.| ++-------+ + +Jet of gas pushes rock right: +|...@...| +|..@@@..| +|...@...| +|.......| +|.......| +|..####.| ++-------+ + +Rock falls 1 unit: +|...@...| +|..@@@..| +|...@...| +|.......| +|..####.| ++-------+ + +Jet of gas pushes rock left: +|..@....| +|.@@@...| +|..@....| +|.......| +|..####.| ++-------+ + +Rock falls 1 unit: +|..@....| +|.@@@...| +|..@....| +|..####.| ++-------+ + +Jet of gas pushes rock right: +|...@...| +|..@@@..| +|...@...| +|..####.| ++-------+ + +Rock falls 1 unit, causing it to come to rest: +|...#...| +|..###..| +|...#...| +|..####.| ++-------+ + +A new rock begins falling: +|....@..| +|....@..| +|..@@@..| +|.......| +|.......| +|.......| +|...#...| +|..###..| +|...#...| +|..####.| ++-------+ +The moment each of the next few rocks begins falling, you would see this: + +|..@....| +|..@....| +|..@....| +|..@....| +|.......| +|.......| +|.......| +|..#....| +|..#....| +|####...| +|..###..| +|...#...| +|..####.| ++-------+ + +|..@@...| +|..@@...| +|.......| +|.......| +|.......| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|..@@@@.| +|.......| +|.......| +|.......| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|...@...| +|..@@@..| +|...@...| +|.......| +|.......| +|.......| +|.####..| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|....@..| +|....@..| +|..@@@..| +|.......| +|.......| +|.......| +|..#....| +|.###...| +|..#....| +|.####..| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|..@....| +|..@....| +|..@....| +|..@....| +|.......| +|.......| +|.......| +|.....#.| +|.....#.| +|..####.| +|.###...| +|..#....| +|.####..| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|..@@...| +|..@@...| +|.......| +|.......| +|.......| +|....#..| +|....#..| +|....##.| +|....##.| +|..####.| +|.###...| +|..#....| +|.####..| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ + +|..@@@@.| +|.......| +|.......| +|.......| +|....#..| +|....#..| +|....##.| +|##..##.| +|######.| +|.###...| +|..#....| +|.####..| +|....##.| +|....##.| +|....#..| +|..#.#..| +|..#.#..| +|#####..| +|..###..| +|...#...| +|..####.| ++-------+ +To prove to the elephants your simulation is accurate, they want to know how tall the tower will get after 2022 rocks have stopped (but before the 2023rd rock begins falling). In this example, the tower of rocks will be 3068 units tall. + +How many units tall will the tower of rocks be after 2022 rocks have stopped falling? diff --git a/src/2022/day17/input b/src/2022/day17/input index e69de29..07cde40 100644 --- a/src/2022/day17/input +++ b/src/2022/day17/input @@ -0,0 +1 @@ +>>><<>>><><<>>>><<<>><>>><<<<>>>><<><<>>><<<<><>>>><<<<>>><<>><>><<<>>>><><<<>>>><<>><<>>><<<>>><<>>>><>>>><<<>>>><<<<><>>>><<<<>><<<<>>><>><>>>><>>>><><<<>>>><<<<>>>><<>>>><<<<>>><<<>>><<<<><<>><<<><<<>>>><>><>>>><<<<>><>>><<>>><<><<>>>><<<<>>><<>>><>>><>>>><<<<>><<<>><<<<>>>><<>>><<><<>><<>><>><<>>>><><<<<>>>><<><>><><<>><<<<>><<<<>>><<<<>>>><>>><><<<>>>><<<<>><<>><<<<>>>><<<<>>><>>>><<<><<><<>><><<>>><>>>><<>>><<<<><<<><>>><>><<<>>><<<>>>><<<>>><<>>>><<<>><<<<>>>><<<>>><<<><<<<><<<>>><>><>>>><<<<><<>>><<<<>>><<><<<<><<<>><<>><>><<<<>>><<<>>><<<<><<>>><<<<><<<><<<<>>><<<<>>>><<>>><<><<<<>>>><<>>><<><<<><<>><<<<><<<>>><<<<>>>><<>><<<<>><>><>><>>><><<<>><<>><>>><>><<<><>>>><>>><<><>>><<>>>><>>>><>><<>>>><>><<<<><<<<>>><<<<>><<>>><>>><<<<><<<<>>>><<<<>><<<<>>>><<<<>><<<><<<>>><<><<>>>><>><<<<>>><<>>>><<<>><<<>>>><<>><<><<<<>>>><><<<<>>>><><<>><<<<>>><<>>>><<<<>>>><><>><<<>>><<<<><<<>><<>>>><<<>>><<<<>>>><>>><>>><<>>>><<<>>>><<<>>><<>>>><<>><<>>><>><<<>>><<<>>>><<<>><<<<><<<>>><<<>>><<>><<<>><<<<>>><<>>>><<<<>>>><>>><>><<<>><<<><<<<><>><<<<>>><<<<><>>>><<<>><<<><<<<><<<<>>>><<<<>><<<>><<<><<>><<<>>><<<<><<>>>><<>>><<>>>><>>>><<<>>><<<>><<<<>><<<><>><><<<<>>><>>>><<>><<<<>><>>>><<<>><<><>>>><<<<>><>>>><<>>><<<<>><>>><>>>><>>><<<><<<>>><<><<>>>><<<<><><<<<>><<<>>><<<><<>><<>><<<<><<>>><<>><<<<><<>><<<>><>>><>><<<<>><<<>><<<>>>><<<>>>><<<<>>>><>><><<<>>>><<<><<<>>><<>>><<>><<<>>><>>>><<<><>>><<><>>>><>><>><<<<>>>><<>><>>>><<>>><>>><<>>><>>>><<<>><<>>>><<<>>>><<><<<<>>><>>><>>><<<>>><<>>><<<<>>><<<>><>>><<<>>>><>>>><>><<<<>>><>>><>>><>>><<<<>>><<><<<>><<<>>><<<<>>><<<><<<>>><>><><>><<>>><<<<>>>><<<>>><<<><<<>>>><<<>>><<<<>>><<<<>>><<<<>>>><>>><<><<>><<>>><<<<>>><<>><<<<>>>><<<><>>>><<<>>>><<<>><<>><<><<>>>><<<<>><<>><<<<><<<<><<<<>>>><<>>>><<<>>><><<<<>>><>>><<>>>><<<>>>><<<>><>>>><<<<>>>><<<><<<>>>><<><<<<>>>><<>>>><<>><<><<<<><<>><<><<<<>>>><>><<<>>>><><<>>>><>>>><>>><<<<>><<><<<>><<>>>><><<><<>>><>><<<><<<>><<<<>><<>>><<<><<<<>>>><>>>><>><>>>><<<>><<><<<<><>>>><<>><<<>>><<<>>><<<>><<<<><><<<>>><<<<>><<<>>>><><<>>>><<>><<<>>><<<<><<<<><>><<>><><<><<>>>><<<>><><<><>><<<<><>><>><>>><<<>><<<>>>><<>><<>><<<<>><>>>><<<<>><>>>><<<<>>><><<<>>><<>><<<>>><<<<><<<>>><<>>>><<<>>><>>>><<<<>>><><>><><><<<>>>><>>>><<<>>><><<><<>>>><<<<>>><>><<<<>>>><>>>><>><>>><<<<>>><<>>><>>><<><<<><>><<><<>>>><<<<>><<>><<<<>>><<<><<><<>>><<<<>>>><<<<>>><<>>>><<<>>><<<<>>>><<<<>>>><<<<>><<<>>><<<<>>><<<>>><<<>><<<>>>><<<<>>>><>>><>>>><<<>>><<<>><<<><<><>>>><<><<>><<<<>>><><<<<><<>>>><<><<<>>><<>><<<<><>>><<>>><<<>>>><<><<<>>>><<><<>>>><><>>>><<>>><>><<>><<>><<><<<<>>>><<<><>><<<<><<<<>><<>><<<>>><<><<><<<<>>>><<<><<<<>>>><<<>><<>>>><<<>><<>><>><><<<>>>><<><<<<>>>><<<>>><<<>>><>>><<<>>><<<>>><<<><<>>><<>>><<<<><<<>><<<>>><<<<>>><<<<>><<<>>>><>><<<>>>><<>><<><<>>>><<<><<>>><<><<<><<<<><>>>><<>>>><<<<>><>><<<<>>><<<<>><>><<<<><><<>>><><<>><<<<>><>>><>>><<<<>>>><<<<><<>><><<<>><><<<<>>><>>>><<<>>>><>><>>>><<<>>>><<>>><<<<>>><<><>>><<<<><<<>>>><<>><<<<><<<>><<>>>><<><><<>><<<>>>><<<>><<><<<>>><<>>><>>><>>>><<>>><<<<>><<<><<>>><<<><<>>><>>><<<<>><<<>>><<>><<<<>><<><<>>><<>><<<><>>>><>><<<><>>><<>>>><<>><><<<<><<<><<<><<<>>><<<>>><<<<>><<<><><>><<<>>>><<>>><<<>><<>>><><>>><>><>>>><<>><<>>><<><<<>>><<<>>>><<<>><<<>>>><>><<><><<><<<<>><<<<>><<>>><<<><>>><<<><<<<>>><<<><<<>>>><<>><<<<>><<<><<>>>><<>><<<<>><<>><<>>><<<<>><<>><><<<><<<>><<<<><<>><>>>><<<>>><>>><<<>>>><<>>>><>>>><<<<>>>><>>>><>>><<<>>>><<>><<<><><<<><<<>>>><<<>>>><<<<>><<<>>>><<<>>>><<<>><><<<<>>>><>>><<<<>>>><<<<><>>><<<<><<<><<<<>>>><><<>>><<<<><<>>><>>><<>>>><>><<<<>>><<<>><>>><<><<<>>><<<<>>><<>>><<<>>><<>>>><<<<>>>><>>>><<<>><<<<>>><<><>><<>>><<<<><<>><<<<><<>>><<<<><<<><<<>>><<><>><<<<>>><<<<>><<<<>>><<><><>>>><>>><<<>>><><>>>><<<>>><>>>><<<>>>><<<>><<>>><<<>>><>>>><>>>><>>><<>>><<<><>><<<>>><<<>>><<<<>>>><<>>><<<<>><<<<>>><<<<><<<<>>><<>><<<<><<>>><<<>>>><<<>><<<><<>>>><<<>>>><><<>>><>>>><<<>><<<>>>><<<<>><>>>><<><<<>>>><<<<>><<<<>>><<>>><<<>>><><<<>>>><<<><<<><>><>>><><<<>>><><<<<>>>><<<<>>>><<<>>>><>>><<>>><>><<<<>>>><<>><<<<><<<<>><>>><<<<><<<<>><<<>>>><<<><<<<><<<<><>>><<<>>><<<<>><<<>>><<><<>>><<<>>><>><<><<>>><<<<>>>><><>>><<<><<<>><<<<>>><<<>><<>><<<>>><<<<><<<<>>>><<<<>><<>><<>>>><<><<<>>>><<<>>>><<<<>>><<<<><>>>><>>><<><<>>><<<>>>><>><<<><<>>>><<><<<>>><>><<>>><<<<>>>><<<>>>><>>><<><<<<><<><>>><<>><<>><<>><<<<>><<<<>>>><<<<>><<<><<>>>><>>>><>>><<<<>><<<><<>>><>>><>><<<>><><<>><<>>>><<><<<<><<<<>>><<>>>><<>><<<><<<<><<>>><<><<<>>>><<<<><>>>><<<<>>>><>>>><<>>>><>><>>><<><<<><<>>>><<<><<><<>>><<><<<<><<<>><<<<>><<><<<>><<<><<<>>><<>><<<>>><<<>>>><>>>><<<>>>><<>><><<>>>><<<<>><<<<>><<<>>>><><<>>>><<<>>>><<<>>>><<>><<<<>>><<<<>><<<>>>><>>><<<<>>><<<>>><><<<<>>><<<>><<>>>><<<>>><<<<>>><<>>>><<>>><<<<>>>><>>><<><<<<>>>><<<>>>><<<<>>><><<<<>><<<<>>><<>>><<<<>>>><<<><<<<>><<<<>>>><<>>><>><><<<>>><<<><>>><>>>><<<><><<><><>><<><>>><<<<>><<>>><<<>>>><>>>><<<<><<<>>><<<<>><<<><>>>><<<<>>><<<<>><<<<><<<<>><<<>>><<<>>><<>>>><>>><<>>>><<<><<><<>>>><<>><<><<<<>>>><><<>><<<>>><>><<<<><<<<>>><<>>><<>><<<>>><<<>><<>>><<<<>>><>>><>>>><>>><>>><>>>><<>><<<<>><<<<>>>><<<<><<<>>><<>>>><<<><<><<<>>><<>>>><<><><>>>><<<>>>><>><<><<<<><>>><>>>><<<>><<<<><<<<><>>><<<<><<>><<<<>>>><<<>>><<<><>>><<><<<<>><>>><<<<>>><<<>>><>>>><<<<>>>><>><<>>><<<><<><<<<>><<<>>>><><<<>><<<>>><<<><<>>><<<>><<<<>>>><<><<>><>><<>>>><<<>>><<>>><<<>>><>>>><>>>><<>>><<<>>>><>><>>>><<<>>>><><<><<<<>><><<>>><<<>>>><<<<><<<<>><<<<>>>><<<<>>><>>><>>><<>>>><><<><<<>>><<>>>><<<>>>><>>>><<>>>><<<><<><<<<>>>><<>>><<<<><<<><<>>>><<<<><<>>><>>>><<>>><<<<><<>><<<<>><<<>><<<><<<<><<<>>><>><<<>>>><<<<>>>><<<<>><<<<>><>><>>>><>>>><<>>><<<><>>><><<<<>>>><<>>><<><<<>>>><<>><<>><<<<>><<<<>>><<<><<>>><<<<>>>><<<>>>><<<>><<<<>><<<>>>><<<<>><>>>><<><<<>><<<><<<>>>><<<>>><<>>><<>>>><<<>>>><>>><<<<>>><>>>><<<>>>><<<><<>>><<<<>><<<>><>><>>><>>>><<><<<>>>><<<><<<><<<<><<<>>><<<<>>><>><<>>>><<<>><<<>>><<>>><>><<<<>>><<><<<<>><<>>>><<<<><<><>>>><<<>>><<<>><>><><<<<>>>><<<<><<<>>><<>><<>>><<<>>><>>><<<<>>>><<<>>><>><<><<<>>>><<<>>>><<<<>>>><<<><<<>>>><<<><<<>>><><<<>>><<>>><><<>>><>>>><<<>>><><<<<>>><<><<<>><>>><>><<<<>>><<<<><<<>>><>><<<<>>><<<>><<><<<<><<<><<>>>><<<<>><<>><<<><<>>>><<>>><<>>>><<<<>><<<<>>><<>>>><>>>><<<<>>><<<>>>><<<>>><>><<<<>>>><<<<>>>><<<><>>><<<<><<<<><<><<<>><<<<>>>><<>>>><<<>><<<<>>>><>>>><<<<>><<<>><<<<>>>><<<>>>><<<>>><>>><>>><<>>><<<>>><>>><<<<>>><<><<>><<<>>><<<<>>>><<<>><<<>><>><<<><<>>><<<<>>><<>><<>>><<<>>>><<<<><><>>>><>><<<>><<<<><<<<>>><<<>><<>><<>><<><<<>>>><>><<><<<<>><<<<>>>><<<<><<<<>><<<<><<<<><<<>>>><<<><<<>>><<<>>><>>><<>>>><<<<>>><>>>><<<<>><<<<><<<><<<><>><><<<<>>>><<>>>><<<<>>>><<>>><<<<>>>><<<>>>><<>>><<<<><<>><<<<><>>>><<<>>>><><<<<>>><<>>><<><<<>>><<>><>>><<>><><<<<>><<<<><<>><>>>><>>>><<>><<<>>><<<<>><<<>>><<<><<<<>>><>>><<>><<<<>>>><<<<>>>><>>>><<<<><>>>><<<<><<<>><<<<>>><>>><>><><<<>>>><<>>><<<<>><>><<<>><<>>><>><<>>><<>>><>>><>><<>>>><>>>><<<>>>><<<>>><>><<><<>>>><<>><<<<>>><<><><<>>>><<<>><>>>><<<>><<<<>>><<<<>><<>>>><<<>>><<<<><>>>><><<<>>><<<<>>><<<<>>><>>><<>><<<>><>>>><<>><><<<>><<<<>>>><>>><>><<<<>>>><<<>>>><>><<><<<>><<<<>>><<<>>><>>>><>><>><<<<>>><>>>><<>>>><<<>><<<>>>><<<<><<<><><<<<>><<>>><<>><<>>>><<>>>><<<<>>><<<>><<>>>><<<<><<<>>><<<>>>><<<<>><<<>><<<<>>><<>>><>>>><<<<>><<>>>><<<<>>>><<>><<<<>>>><><<<<>><<<>><<<<>>><<<<><<<<>>>><<<>><<>>>><<<<>><<>>><<>><<>>>><<<<>><<>><<>>>><<><<<>><<>>>><<>><<>>>><<<>><>>>><<>><<<>>>><<>>>><>><<>><<<>>>><<<<>><>>>><<<>><><<<<>>><<<<><<>>>><<<<>><<<<>><<<<>>><>>><<<>>>><<<<><<<<>>><<<>>>><<>><><<<<>>>><<<<>>><<<>>>><<>>>><<>><<<<>><<<<><<<<>>>><<<>>>><<<>>><>>><<<><<<>><<>>><>><<<>>>><<>><>>><<<>>><<<>>><<<>>>><>>><<<>>>><>>>><<<>>><<<<>>><<<>><<>><<<<>><<<<><<<<>><<<<><<<<>>>><<>>><<<>><<>><<<>><<>>>><>><<<<>><<<>>>><>><>>>><<>>><<>><<<<>>>><<><<<>><<<<><>>><<<<>>><>><<<>>><>><>><>><<<>><>>>><<<>>>><<<>>>><<<>><<<<>><<<><<>>><<>>>><>>>><<>>>><<<<>>><<<<><>>><<<<><<>>><<<>>>><<<><<<<>><<<>>>><<<><<<<>><<><<<<>><<<<>><<<>><><><<<>>><><<<>><<<<>><<><<>>><<<>>><<<>><<><<<>>>><<<>><<>>>><<<>>>><>><<<>>><<<<>><><<>>><<<<>>>><><<<<>><<<>><<<>>><<<>><<<<><<><<<><<<>><<<<>>>><<<<>>>><<<<>>>><<>>><<<<>>><<<<>>>><<<><<>><<<<>>>><<>><<>>><<>>>><<>><<>><><<><<><<<<>><>><<><>>><>>><<<><<<>>>><<>>>><<>>><<<>>><<<<>><>>>><<>>>><<><<<<>><<<<>><><<<>><>>>><<><>>>><<<>>>><><>><<><<><><<<>>><<<<>>><<>><<<>>>><<<<>>><<><>>><><<>>><<<><<><<<>>>><<<<>>><<<>><<<<>><<><<<>><<<<><<<><<<<>>><<<<>>><<<>>>><<><<<>>><>>><<>>><><<>>><<<<><<>><<>>><>>><<<<>>><<<<><<>>>><<>>><<>><<<<><>>>><<<>>>><>><<>>>><<<<>>><>><>>><<<>>>><><<<<>><<<<>>>><<<>>><>>>><<>>><><<<<><>>>><<>>><<<<><<<>>>><<<>>><>>>><><>>><<>><>><>><<<>><<<<>><<<><<>>>><<<>>><><<<>><>><<<<>><<>><<<<><<<<>><<<>>>><<<><<<<>>>><<>><<><<<>><>><<<>>>><<>>><<<<><><>>>><>><<<>><<<<><>>><<>>><><>>><<>>>><><<<>>>><<<>>><<<>><>><<>>>><><>><<<<>>>><<<><<<>>><<><<<<><<>>>><<>>>><<<>>>><>>>><<<<>>>><<<>><<<<>><<><<<<>>><<<>>>><<<><<<>>>><<<<>>>><><>>>><<><<<<><>>>><>>>><<<>>><<>>>><<<>>><<<>><<>>>><<>><><<>><<>>><><>>>><>>><<<<>>><<<<>><<<<>>>><<>><<<<>><<<<><<<<>>>><><<><<>>>><<<>><<<<><<<>>>><<<>>><<><<>><<<><<<>>>><><><<<<><><>>>><<>>>><<>><<<<><<<>>><<<><>>><<<<>>>><<<<>>>><<>>><<<<>><<<<>>><<>><<>>><<>>>><>>>><<>>>><>>>><<>>>><<<>><>>><<><<<>>><>><<>><<>>><>>>><<><<>>>><>><<<>>><<>>>><<<<>>><><<>><<>><<<><<<<>>>><<>>>><>><<<>><<<<>><<<<>>><<>>>><<<<><<>><<<><><<>>>><<>>>><<<>>><<<<>>>><<<>>>><<>>><<<<>>><>><<<<>>><<<>>><<>>>><>>>><<<><<>><>><<<<><>>>><>><<<>><>><>>><<<><>>><<<<>><<>>>><>>>><<>>>><<>><<<<>>>><>><<<>>><>>><<>>>><<>>><<<<>>>><<<><<<<>><<<>>>><<<><<<>><<<<>><<<>>><<>>>><><<<>><<<>><<<><<<<>>><<<>>>><<<<>><<>><<<>>><<<<><<<><><<<<>><<<<>>>><<><<<>><<>>>><<>>>><>>>><<>><<<><<>>>><<>><<<>>><<<>>>><>>><>><<<>>>><<><<>>><<<<>>>><<<><<<>><>><<><<<<><<<>>>><<<>>>><<<<>>>><<>><<>><<<<>><>><<>><<>>><<<<>><<<<><<<<>>>><<<>>>><<><<>>>><<<>>><>><<>>><<<<>><<<>>>><<<<>>>><<<<>>>><>>>><><><<<<><<>>><>><<>>><>><<<>>>><<>><<>>><<<<>><<><<>><<<<>><<<<><<<<>><<<<>><<<>><<<<>>><>>>><<>>><>>><<>>>><<>><<<>>><<<>>><<<>><>><<<<>>>><>><>>><<>>>><<>>>><<<>>>><<<<>>>><<<><<<>>>><>><<<>>>><<><<<><>><<<<>>>><<<>>><<<>>>><<><<>>>><<<<>> diff --git a/src/2022/day17/input0 b/src/2022/day17/input0 index e69de29..97a1aa1 100644 --- a/src/2022/day17/input0 +++ b/src/2022/day17/input0 @@ -0,0 +1 @@ +>>><<><>><<<>><>>><<<>>><<<><<<>><>><<>> diff --git a/src/2022/day18/README.md b/src/2022/day18/README.md new file mode 100644 index 0000000..c5e4809 --- /dev/null +++ b/src/2022/day18/README.md @@ -0,0 +1,29 @@ +--- Day 18: Boiling Boulders --- +You and the elephants finally reach fresh air. You've emerged near the base of a large volcano that seems to be actively erupting! Fortunately, the lava seems to be flowing away from you and toward the ocean. + +Bits of lava are still being ejected toward you, so you're sheltering in the cavern exit a little longer. Outside the cave, you can see the lava landing in a pond and hear it loudly hissing as it solidifies. + +Depending on the specific compounds in the lava and speed at which it cools, it might be forming obsidian! The cooling rate should be based on the surface area of the lava droplets, so you take a quick scan of a droplet as it flies past you (your puzzle input). + +Because of how quickly the lava is moving, the scan isn't very good; its resolution is quite low and, as a result, it approximates the shape of the lava droplet with 1x1x1 cubes on a 3D grid, each given as its x,y,z position. + +To approximate the surface area, count the number of sides of each cube that are not immediately connected to another cube. So, if your scan were only two adjacent cubes like 1,1,1 and 2,1,1, each cube would have a single side covered and five sides exposed, a total surface area of 10 sides. + +Here's a larger example: + +2,2,2 +1,2,2 +3,2,2 +2,1,2 +2,3,2 +2,2,1 +2,2,3 +2,2,4 +2,2,6 +1,2,5 +3,2,5 +2,1,5 +2,3,5 +In the above example, after counting up all the sides that aren't connected to another cube, the total surface area is 64. + +What is the surface area of your scanned lava droplet? diff --git a/src/2022/day18/aoc.cpp b/src/2022/day18/aoc.cpp new file mode 100644 index 0000000..56681a2 --- /dev/null +++ b/src/2022/day18/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day18(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day18/aoc.h b/src/2022/day18/aoc.h new file mode 100644 index 0000000..55c9555 --- /dev/null +++ b/src/2022/day18/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day18(line_view); +} diff --git a/src/2022/day18/input b/src/2022/day18/input new file mode 100644 index 0000000..715d345 --- /dev/null +++ b/src/2022/day18/input @@ -0,0 +1,2117 @@ +1,8,9 +5,11,3 +11,7,16 +13,14,4 +11,3,10 +15,15,13 +13,5,9 +9,14,3 +2,11,11 +6,13,15 +3,12,11 +8,12,17 +2,9,8 +12,8,15 +5,11,6 +8,2,12 +9,5,2 +12,13,15 +10,15,7 +14,12,3 +10,2,6 +14,5,15 +16,11,9 +13,15,14 +3,4,12 +3,8,6 +8,8,1 +12,3,8 +12,14,5 +3,11,12 +16,14,9 +16,5,14 +7,6,5 +3,6,5 +16,12,9 +4,13,12 +7,16,9 +1,11,10 +11,4,14 +5,16,7 +11,15,7 +9,15,14 +10,16,7 +13,3,14 +10,1,8 +17,9,6 +6,3,10 +3,5,9 +6,12,3 +12,6,16 +7,12,4 +13,12,16 +14,3,9 +11,8,3 +17,8,11 +7,13,2 +3,6,8 +14,15,10 +8,6,3 +6,2,9 +10,17,10 +7,12,3 +12,16,5 +2,12,8 +15,15,11 +10,18,11 +9,7,17 +4,12,14 +9,18,9 +12,13,17 +14,4,14 +17,6,12 +17,11,6 +2,11,7 +13,17,9 +7,3,9 +8,5,4 +14,7,16 +14,11,17 +10,3,16 +5,6,4 +13,3,12 +14,15,7 +13,10,15 +14,16,7 +12,15,5 +15,11,7 +12,5,3 +15,8,5 +15,9,15 +3,14,12 +7,11,1 +7,14,5 +3,5,8 +14,3,7 +8,4,14 +3,8,8 +16,8,10 +14,16,9 +6,6,3 +12,13,2 +12,10,3 +9,2,12 +11,15,6 +13,17,11 +15,16,9 +14,10,16 +4,11,5 +12,15,13 +4,5,12 +10,2,8 +15,14,7 +15,5,14 +9,17,8 +9,5,16 +5,14,14 +8,9,16 +3,11,9 +9,8,3 +11,12,3 +8,5,3 +3,10,5 +17,8,14 +15,5,6 +8,4,5 +2,11,5 +2,10,10 +14,5,14 +16,6,5 +9,16,13 +4,8,17 +16,10,14 +3,7,10 +12,6,2 +7,7,16 +5,12,4 +10,4,13 +16,14,10 +4,10,5 +15,10,13 +15,5,9 +4,11,16 +17,5,10 +7,17,9 +10,13,2 +4,12,12 +5,15,12 +16,11,7 +11,8,2 +4,15,11 +8,7,17 +11,2,10 +17,12,9 +6,4,13 +12,2,12 +10,15,4 +5,5,16 +4,4,7 +8,4,15 +3,9,12 +14,15,13 +9,4,16 +9,18,10 +14,5,8 +11,3,7 +9,4,13 +3,9,4 +12,2,7 +14,13,5 +13,3,13 +11,12,17 +12,12,17 +13,5,3 +7,12,2 +5,9,15 +16,11,13 +4,8,4 +10,15,16 +11,12,16 +9,2,14 +14,6,5 +1,7,10 +15,6,10 +3,15,7 +3,12,13 +5,16,8 +12,17,10 +3,10,14 +18,10,5 +5,2,9 +6,7,5 +2,10,8 +13,15,12 +3,15,11 +9,9,18 +15,4,12 +13,5,15 +16,8,14 +17,13,9 +5,15,10 +11,3,4 +11,3,3 +4,8,15 +2,9,7 +6,4,9 +7,4,14 +6,8,2 +3,6,12 +4,10,3 +11,9,16 +10,14,16 +3,10,4 +12,16,8 +12,5,4 +17,6,11 +16,10,10 +2,8,8 +2,12,6 +9,8,17 +7,16,12 +4,13,7 +8,17,6 +14,7,13 +11,3,5 +9,13,1 +13,4,12 +3,10,15 +9,14,5 +8,16,8 +4,7,3 +6,13,5 +14,16,6 +14,6,4 +10,2,9 +1,6,9 +9,13,18 +15,6,15 +7,3,10 +8,16,10 +9,3,9 +15,16,10 +8,11,16 +4,6,13 +13,6,2 +1,8,11 +13,13,3 +15,16,8 +11,2,9 +6,9,16 +9,3,13 +3,5,11 +15,11,15 +16,15,8 +9,8,16 +8,1,7 +5,9,2 +9,2,11 +5,15,9 +13,11,16 +14,16,11 +4,6,6 +12,3,5 +8,17,12 +8,6,2 +14,6,6 +11,11,2 +13,14,6 +5,14,6 +16,11,14 +5,2,13 +11,16,6 +12,17,6 +3,15,6 +7,4,4 +5,6,14 +11,10,2 +5,17,12 +15,14,14 +3,14,10 +12,3,14 +4,5,5 +11,7,2 +12,13,16 +3,9,14 +6,6,14 +9,2,10 +9,7,16 +15,6,12 +16,9,6 +10,0,11 +13,3,5 +6,4,6 +6,16,13 +6,13,16 +5,15,5 +12,15,14 +6,9,3 +11,18,10 +14,4,10 +15,10,15 +9,9,16 +4,8,11 +2,9,10 +9,12,2 +8,3,7 +7,10,2 +13,16,13 +8,1,10 +12,5,16 +5,16,9 +2,12,13 +15,9,3 +7,13,4 +7,17,8 +9,10,17 +11,14,2 +9,14,15 +1,8,13 +6,6,15 +16,14,13 +5,14,5 +9,17,13 +6,3,11 +7,2,8 +4,8,16 +8,3,11 +3,7,9 +3,8,4 +3,7,13 +13,5,10 +7,1,10 +13,11,17 +17,8,7 +6,15,14 +9,3,15 +11,14,4 +11,8,18 +10,5,15 +8,14,16 +14,16,4 +15,8,3 +15,4,8 +2,7,12 +12,14,16 +15,14,13 +10,3,6 +11,6,14 +16,11,8 +2,8,10 +5,6,5 +17,13,13 +13,14,5 +11,5,4 +3,3,11 +18,12,11 +17,6,7 +2,6,8 +5,4,6 +15,3,9 +10,16,4 +16,5,11 +4,14,6 +10,17,6 +11,7,1 +8,2,11 +17,12,13 +10,12,1 +16,14,8 +7,15,3 +9,16,14 +9,17,9 +6,15,5 +12,16,4 +14,14,8 +14,11,2 +6,6,16 +5,5,9 +7,9,16 +2,7,11 +8,15,15 +5,4,12 +6,9,2 +5,11,5 +3,8,15 +1,10,9 +10,12,16 +11,9,17 +15,13,5 +3,14,7 +4,15,8 +13,7,5 +5,15,4 +4,10,14 +8,15,14 +17,10,8 +15,5,5 +11,2,12 +17,6,10 +7,6,3 +17,8,13 +14,9,5 +12,7,3 +7,2,12 +14,16,8 +18,8,10 +4,10,11 +11,16,13 +4,13,15 +6,16,11 +16,12,12 +6,7,16 +18,12,6 +14,9,14 +11,4,7 +5,14,3 +12,2,6 +8,9,1 +3,11,13 +14,14,11 +7,3,7 +4,8,7 +5,5,4 +6,4,14 +2,10,12 +14,4,13 +14,2,9 +19,7,9 +10,6,2 +13,17,8 +4,15,7 +16,8,4 +13,5,4 +7,17,13 +5,5,13 +14,15,8 +17,9,12 +15,6,3 +6,15,6 +6,15,15 +14,16,10 +8,15,4 +13,4,5 +6,2,10 +2,13,12 +11,5,15 +9,3,6 +9,17,7 +12,7,16 +16,3,8 +6,5,16 +6,14,3 +5,4,13 +11,17,9 +10,9,1 +3,7,4 +16,14,6 +15,14,10 +10,2,11 +8,2,10 +13,16,15 +2,7,8 +8,17,7 +11,15,5 +17,6,8 +9,1,10 +6,4,12 +10,7,17 +16,15,9 +9,11,17 +4,12,17 +4,3,9 +14,6,14 +9,6,3 +10,2,12 +14,13,4 +5,12,15 +10,9,18 +5,4,11 +5,13,15 +5,13,4 +11,15,15 +6,3,7 +14,9,15 +8,6,4 +10,18,10 +13,4,15 +14,9,3 +6,11,2 +12,9,17 +5,13,6 +14,11,14 +13,9,3 +11,16,4 +17,10,6 +9,6,17 +15,8,16 +15,6,5 +3,9,13 +10,5,3 +5,17,9 +14,11,3 +10,15,14 +15,15,12 +7,6,15 +5,5,14 +9,8,2 +12,2,8 +8,12,2 +11,14,3 +7,2,10 +15,10,14 +6,3,13 +4,4,6 +17,11,12 +10,9,16 +11,16,5 +16,14,11 +15,5,13 +6,2,11 +16,14,14 +6,16,4 +7,16,6 +12,14,4 +5,12,13 +8,16,9 +15,5,7 +16,10,7 +3,10,16 +5,7,3 +12,6,3 +2,7,6 +11,10,17 +17,7,11 +7,10,1 +2,10,13 +13,3,11 +10,4,12 +7,13,9 +16,8,9 +1,11,11 +8,14,15 +10,11,17 +14,12,4 +3,13,12 +6,14,7 +2,12,9 +17,13,10 +11,5,5 +14,5,3 +3,8,14 +4,6,5 +4,11,7 +11,15,14 +17,10,9 +11,17,6 +13,9,17 +16,11,6 +7,4,6 +16,6,12 +11,6,3 +5,15,7 +10,6,3 +3,11,5 +3,12,5 +15,9,5 +15,10,16 +9,9,2 +7,8,3 +2,10,9 +17,9,13 +10,14,17 +13,14,14 +3,11,6 +8,10,18 +13,8,2 +12,3,12 +16,12,6 +3,9,7 +14,14,14 +5,11,15 +4,7,5 +13,15,10 +12,3,6 +17,14,9 +8,9,2 +6,17,12 +12,3,9 +13,13,16 +11,9,2 +13,6,3 +7,13,1 +2,11,15 +13,5,8 +9,17,12 +5,7,16 +5,16,10 +12,12,1 +3,8,9 +5,12,16 +14,7,17 +15,4,11 +12,15,4 +5,9,4 +5,14,15 +11,9,18 +8,2,14 +10,4,4 +13,16,7 +9,2,13 +13,5,14 +11,18,11 +11,14,16 +8,7,16 +7,2,6 +5,4,14 +8,7,15 +13,10,17 +13,2,10 +16,5,10 +17,11,13 +4,5,10 +3,7,8 +11,11,16 +10,16,15 +12,16,6 +11,16,8 +11,8,17 +17,12,8 +3,15,10 +12,12,4 +15,11,6 +3,13,7 +7,17,6 +6,8,16 +9,4,15 +10,15,5 +16,4,11 +13,4,6 +8,5,17 +8,3,14 +18,11,9 +17,7,10 +1,9,13 +11,4,3 +14,5,4 +9,2,7 +16,16,8 +17,12,5 +17,10,10 +5,15,6 +17,13,6 +11,16,12 +8,12,4 +18,10,7 +2,11,9 +13,2,11 +4,11,4 +12,12,16 +13,8,18 +13,8,17 +6,10,17 +5,4,10 +17,9,15 +7,15,13 +2,13,11 +13,12,2 +9,3,5 +17,12,12 +15,6,14 +12,17,8 +11,15,12 +3,7,15 +13,15,5 +16,8,7 +7,7,3 +10,14,2 +13,6,5 +11,4,12 +16,8,6 +2,6,10 +14,12,2 +5,11,4 +10,17,8 +17,9,9 +2,14,6 +12,16,13 +18,11,13 +8,8,3 +13,4,4 +17,7,9 +10,8,16 +10,11,2 +9,12,17 +9,14,16 +9,12,3 +13,12,17 +1,9,8 +13,14,16 +7,14,2 +10,14,5 +12,10,17 +17,11,10 +4,10,4 +14,14,5 +5,10,14 +15,14,8 +4,14,11 +15,9,14 +7,7,18 +13,16,11 +3,12,6 +15,7,14 +3,10,12 +8,12,3 +4,15,6 +8,13,4 +3,10,9 +9,17,4 +6,15,13 +5,7,13 +10,3,14 +16,9,15 +8,17,9 +8,18,9 +13,16,12 +14,10,17 +5,3,8 +17,6,5 +14,5,13 +12,5,14 +2,12,11 +7,9,2 +14,8,14 +14,14,7 +14,15,5 +6,3,8 +1,9,11 +5,16,11 +10,16,8 +13,9,15 +4,14,13 +8,3,4 +15,9,4 +5,3,6 +2,14,10 +8,14,17 +15,15,7 +9,6,16 +7,17,11 +12,9,2 +18,8,11 +6,14,4 +10,15,15 +13,15,16 +14,15,6 +16,14,12 +9,9,3 +15,5,11 +14,7,15 +18,11,8 +8,15,12 +14,6,11 +11,17,12 +8,2,8 +4,11,14 +6,12,18 +3,4,9 +9,1,9 +3,6,14 +9,16,5 +6,5,13 +4,14,9 +5,15,14 +5,7,12 +17,12,10 +10,13,16 +9,17,11 +16,7,6 +2,5,9 +1,12,11 +15,10,4 +8,16,15 +5,15,8 +13,11,15 +12,14,15 +5,8,14 +9,9,17 +9,13,2 +4,7,9 +13,9,2 +7,4,5 +2,11,10 +7,5,4 +13,14,13 +10,7,2 +16,6,6 +11,17,7 +13,6,14 +14,8,15 +15,4,13 +5,13,3 +7,15,5 +9,4,14 +4,6,10 +15,13,7 +12,7,2 +12,2,10 +15,8,14 +4,16,11 +12,13,18 +9,4,4 +9,12,18 +12,13,4 +14,8,2 +11,13,4 +16,6,9 +15,12,4 +9,7,2 +14,10,6 +18,11,10 +8,3,12 +16,5,9 +14,3,10 +14,14,15 +15,13,15 +13,16,5 +7,1,9 +15,3,8 +3,13,13 +6,2,13 +5,3,12 +10,4,15 +11,3,14 +7,4,12 +16,7,9 +16,13,11 +2,8,9 +11,16,10 +15,12,15 +4,3,10 +15,7,15 +5,10,15 +15,8,15 +9,5,4 +9,18,8 +15,5,15 +9,17,6 +7,2,7 +13,13,4 +7,6,14 +11,4,4 +15,7,5 +17,15,11 +11,16,7 +2,6,9 +8,11,18 +3,10,6 +9,2,9 +4,9,13 +2,14,8 +6,13,6 +17,8,15 +6,16,5 +6,15,16 +8,3,8 +11,2,7 +7,6,2 +3,12,15 +16,12,13 +14,11,15 +2,9,11 +16,12,8 +6,16,10 +9,6,4 +14,3,8 +8,16,6 +8,9,17 +13,5,12 +4,5,15 +4,7,13 +14,5,5 +17,10,14 +5,11,16 +6,6,17 +15,3,11 +5,14,8 +14,13,15 +17,7,13 +13,17,6 +15,6,11 +2,7,9 +5,11,13 +5,4,15 +7,11,2 +14,8,16 +16,8,12 +16,10,4 +14,6,16 +14,6,15 +3,7,5 +14,14,6 +11,6,15 +4,9,7 +14,2,6 +8,4,16 +3,9,11 +7,4,3 +11,12,2 +8,14,4 +4,6,7 +10,4,3 +11,12,1 +12,4,4 +6,18,10 +15,11,4 +9,12,0 +5,15,11 +13,7,3 +12,2,9 +12,6,5 +9,15,4 +8,12,1 +3,14,9 +9,5,3 +14,14,13 +7,14,15 +11,13,15 +14,11,16 +4,15,12 +7,18,11 +9,1,8 +3,12,14 +13,3,7 +5,5,15 +15,8,7 +8,12,18 +1,10,6 +5,13,10 +11,1,9 +16,5,8 +11,15,4 +5,4,9 +15,14,12 +11,1,11 +10,15,13 +15,5,10 +12,18,7 +18,6,11 +10,10,2 +11,17,10 +7,14,14 +1,11,13 +6,5,3 +14,7,14 +17,11,9 +13,17,7 +11,10,1 +4,6,14 +12,4,6 +9,7,1 +1,10,12 +10,16,14 +11,2,8 +16,11,15 +14,15,14 +6,11,16 +15,16,11 +4,8,5 +3,13,14 +3,13,10 +4,5,13 +6,4,10 +9,2,15 +4,11,3 +10,3,7 +11,14,5 +2,13,10 +13,11,1 +13,7,14 +16,5,7 +5,9,3 +12,8,16 +5,8,13 +14,3,12 +3,5,10 +3,9,3 +16,13,13 +6,15,12 +7,5,5 +2,13,9 +8,13,3 +10,13,3 +4,7,16 +7,12,17 +5,7,14 +12,18,11 +11,17,11 +3,15,12 +5,8,15 +4,10,15 +13,11,3 +8,14,14 +5,5,3 +4,7,12 +7,13,16 +16,10,13 +10,17,7 +3,13,11 +7,11,16 +11,16,14 +13,4,14 +5,17,10 +6,5,4 +5,3,7 +10,12,2 +14,17,8 +6,3,15 +2,8,13 +8,3,13 +7,12,16 +13,10,3 +13,8,16 +15,10,6 +13,9,16 +13,6,16 +11,3,9 +6,14,2 +4,11,11 +13,6,4 +7,18,9 +10,6,17 +6,7,15 +6,4,15 +15,9,11 +4,6,12 +12,11,16 +3,12,10 +4,9,6 +2,12,12 +7,2,9 +7,14,6 +8,1,9 +15,6,13 +4,12,15 +18,7,7 +6,10,3 +10,11,1 +12,18,9 +17,8,10 +12,4,10 +4,13,4 +3,4,8 +14,10,2 +4,15,10 +4,6,9 +2,9,12 +17,13,8 +14,8,13 +13,6,15 +11,3,8 +15,12,14 +2,8,11 +16,8,8 +10,7,18 +8,3,9 +16,9,10 +9,15,5 +7,16,8 +8,11,17 +3,11,15 +7,7,2 +15,16,7 +7,10,17 +8,7,2 +8,16,13 +11,3,13 +11,14,17 +18,11,11 +13,4,16 +5,17,7 +13,12,3 +10,1,11 +16,4,7 +7,11,17 +2,5,10 +12,12,2 +10,14,3 +6,12,2 +14,11,4 +8,2,9 +10,15,8 +13,10,6 +4,7,4 +9,13,4 +10,3,4 +17,7,8 +17,4,8 +15,14,6 +7,11,3 +14,13,14 +12,9,15 +3,8,7 +13,7,15 +3,14,8 +7,16,15 +7,18,5 +4,11,15 +9,15,16 +3,6,6 +10,9,3 +4,12,16 +3,10,11 +9,11,16 +9,9,1 +2,8,6 +18,9,10 +18,9,8 +14,13,3 +12,17,7 +3,12,8 +15,9,8 +14,5,6 +7,18,8 +3,5,7 +3,12,4 +16,8,13 +7,4,8 +2,11,6 +3,8,13 +17,8,6 +5,16,12 +6,7,3 +9,14,4 +13,13,2 +8,4,13 +12,3,13 +13,17,10 +3,10,7 +6,17,10 +9,3,14 +11,17,13 +6,14,11 +9,15,3 +6,2,12 +15,15,6 +11,4,15 +5,4,5 +12,5,2 +8,18,11 +17,12,6 +11,11,17 +1,8,10 +12,16,10 +10,6,16 +7,13,15 +13,15,13 +9,1,12 +14,4,12 +4,9,14 +17,10,12 +9,3,12 +12,3,7 +2,6,7 +7,9,1 +11,6,5 +7,1,13 +13,10,18 +5,7,2 +13,10,5 +12,7,17 +5,8,17 +11,8,1 +9,5,17 +4,3,12 +8,11,2 +12,14,6 +3,8,10 +9,5,14 +6,15,8 +3,11,4 +13,2,5 +11,1,7 +14,5,10 +3,10,8 +17,7,7 +18,9,11 +6,12,16 +4,3,7 +15,7,4 +6,5,15 +17,8,12 +11,17,8 +16,11,4 +8,14,2 +3,5,13 +16,10,5 +10,18,12 +4,12,4 +12,9,16 +5,5,7 +11,3,12 +4,5,6 +12,12,3 +7,15,14 +16,12,5 +6,1,10 +5,6,15 +14,10,4 +2,13,7 +9,5,5 +14,9,16 +3,14,11 +8,4,12 +11,2,6 +11,13,17 +9,14,2 +16,13,8 +8,15,13 +11,6,2 +4,7,8 +15,14,5 +12,5,15 +16,13,6 +8,4,7 +2,10,6 +7,14,3 +18,10,11 +11,18,13 +15,4,6 +15,9,16 +1,12,10 +6,5,5 +17,5,9 +16,13,9 +3,7,7 +10,3,11 +2,8,12 +11,9,1 +16,4,8 +16,7,5 +4,7,14 +13,10,2 +17,12,11 +15,11,16 +7,4,15 +9,16,15 +2,13,8 +5,8,3 +12,4,15 +3,7,14 +5,10,2 +10,3,5 +6,17,11 +14,12,5 +16,7,13 +5,13,11 +16,9,8 +10,17,13 +10,12,17 +3,12,7 +4,4,8 +11,2,5 +3,14,6 +5,7,10 +16,6,7 +9,16,11 +16,13,14 +9,15,15 +4,6,15 +15,11,9 +4,14,7 +8,17,14 +8,5,16 +17,11,8 +2,9,13 +8,16,4 +3,6,13 +7,6,12 +3,4,7 +10,8,1 +18,11,12 +15,2,11 +7,14,4 +9,7,3 +1,7,11 +5,8,16 +6,9,17 +9,10,2 +7,9,18 +10,5,4 +7,6,16 +9,14,14 +13,16,14 +12,13,6 +17,8,5 +10,1,9 +6,16,12 +6,16,14 +16,8,5 +6,5,14 +9,6,2 +12,5,7 +13,13,12 +9,3,10 +11,11,1 +12,6,17 +3,6,11 +15,7,12 +12,10,1 +15,3,6 +5,16,6 +9,4,3 +14,5,2 +14,16,12 +2,11,8 +6,13,3 +5,15,13 +12,5,9 +5,6,9 +17,14,8 +1,8,7 +14,15,9 +8,16,14 +2,9,14 +9,4,7 +13,5,16 +9,16,10 +15,14,11 +6,10,18 +13,8,15 +6,2,5 +3,15,9 +7,15,12 +10,9,2 +16,9,13 +11,2,13 +12,8,2 +14,10,5 +8,6,17 +15,11,14 +13,5,13 +17,14,11 +4,9,15 +9,16,7 +10,17,9 +4,17,11 +10,17,14 +9,15,7 +9,10,14 +11,15,3 +13,16,9 +11,13,2 +4,14,14 +4,14,8 +12,1,8 +14,5,7 +15,15,5 +13,10,16 +7,8,16 +7,17,10 +11,18,7 +16,7,7 +7,5,3 +5,12,7 +10,3,10 +1,7,9 +13,5,11 +15,13,13 +6,13,14 +15,4,14 +14,3,14 +2,6,11 +15,6,7 +9,11,18 +7,13,3 +17,11,7 +4,8,2 +8,17,11 +6,13,4 +5,14,11 +9,17,10 +17,7,6 +7,8,2 +12,17,11 +4,8,14 +7,10,18 +9,8,18 +5,3,10 +6,3,6 +7,13,17 +7,9,17 +16,6,13 +8,18,6 +6,6,6 +16,9,5 +10,5,17 +10,3,15 +3,4,6 +12,14,13 +4,15,9 +17,9,14 +16,9,16 +4,13,11 +6,8,14 +9,11,1 +1,10,7 +14,4,6 +16,8,15 +17,9,7 +8,14,3 +7,17,14 +16,6,10 +5,1,8 +5,3,11 +10,17,12 +17,12,15 +6,5,6 +4,4,10 +14,10,3 +5,13,5 +10,8,18 +7,3,6 +13,14,12 +15,4,9 +8,2,6 +7,12,1 +10,12,4 +17,5,12 +15,7,16 +13,15,4 +8,16,12 +9,2,6 +13,16,8 +6,8,3 +3,7,11 +12,4,3 +9,11,2 +10,11,4 +5,7,15 +6,11,3 +16,11,12 +13,16,6 +13,8,3 +13,2,9 +7,14,7 +11,1,10 +3,10,13 +4,12,5 +18,10,10 +14,4,7 +4,13,13 +10,2,7 +12,3,4 +2,11,12 +8,17,13 +7,15,9 +11,5,14 +14,3,13 +2,9,6 +5,10,16 +14,13,2 +18,9,5 +11,11,18 +6,12,5 +12,14,3 +15,7,11 +5,10,4 +11,16,15 +4,7,10 +14,13,16 +4,10,16 +6,2,8 +4,14,15 +16,11,5 +13,8,1 +14,3,11 +6,13,17 +17,9,8 +2,4,10 +13,2,7 +16,13,7 +8,8,17 +3,9,5 +10,2,10 +15,7,3 +4,5,9 +7,10,3 +8,8,18 +17,5,11 +8,7,1 +10,4,5 +8,18,12 +4,4,11 +18,8,12 +12,17,12 +15,4,7 +10,5,16 +16,15,12 +7,3,14 +15,13,14 +12,4,14 +17,11,5 +12,8,18 +3,16,11 +13,2,8 +10,16,6 +6,12,4 +12,9,1 +8,11,0 +4,13,6 +10,1,12 +14,4,5 +4,5,7 +10,3,13 +8,10,1 +10,10,1 +17,12,7 +16,7,14 +7,5,2 +11,18,9 +5,7,5 +9,10,18 +7,7,17 +7,15,7 +8,3,6 +17,6,9 +5,7,4 +15,11,11 +12,2,11 +15,8,13 +12,1,10 +16,12,14 +16,8,11 +16,9,4 +6,2,7 +5,9,16 +8,3,5 +13,4,13 +12,11,3 +15,13,4 +13,15,9 +11,6,4 +15,13,9 +6,13,7 +12,5,5 +6,12,14 +5,3,9 +14,1,9 +15,6,4 +13,10,1 +11,13,16 +2,9,5 +3,14,14 +9,16,12 +12,4,5 +10,4,17 +13,7,2 +8,12,16 +8,17,10 +5,9,14 +13,9,13 +16,15,7 +14,17,9 +5,5,12 +14,8,17 +15,7,10 +12,15,3 +3,11,14 +4,13,9 +5,7,8 +11,3,6 +9,13,16 +15,6,6 +6,6,4 +17,13,7 +7,4,16 +7,5,16 +10,5,14 +6,10,4 +7,16,7 +16,10,15 +17,7,5 +17,15,10 +4,10,10 +15,7,8 +9,16,8 +12,15,16 +6,14,5 +17,9,11 +7,17,12 +13,4,11 +5,9,10 +7,8,15 +6,14,16 +13,15,6 +12,1,9 +3,7,6 +4,5,14 +7,15,4 +4,12,13 +5,5,5 +12,8,4 +17,10,5 +12,14,14 +4,16,5 +9,18,11 +15,7,17 +17,10,13 +14,15,12 +3,11,7 +14,12,15 +7,10,14 +11,15,2 +11,7,18 +9,13,3 +8,4,6 +11,3,15 +3,12,9 +19,9,10 +5,11,17 +7,1,7 +2,8,7 +5,12,5 +16,14,7 +12,17,9 +18,9,7 +14,7,4 +10,10,18 +4,13,14 +5,14,4 +16,6,11 +5,6,13 +11,4,17 +3,15,14 +17,14,12 +2,7,10 +5,14,13 +13,13,17 +12,16,15 +15,11,13 +16,16,9 +7,17,7 +6,9,4 +14,8,4 +11,7,4 +4,13,5 +11,18,8 +13,5,2 +6,6,2 +13,15,8 +3,5,12 +3,13,5 +7,14,17 +4,4,15 +17,11,14 +8,16,7 +15,4,5 +8,4,4 +5,12,2 +15,14,9 +4,6,8 +14,7,2 +18,10,9 +15,12,17 +14,12,16 +6,7,14 +3,11,2 +13,13,15 +12,14,7 +13,5,5 +12,15,15 +12,10,2 +8,8,2 +18,7,9 +5,4,7 +6,9,15 +6,14,15 +13,6,13 +13,10,4 +10,3,9 +12,18,8 +8,16,5 +4,14,12 +5,13,9 +8,15,6 +7,7,15 +3,6,7 +5,5,6 +7,5,11 +12,11,17 +2,14,9 +10,10,17 +2,10,7 +5,4,4 +8,2,7 +17,5,8 +7,16,13 +3,15,13 +4,6,4 +13,3,6 +8,11,3 +5,13,13 +4,8,3 +13,15,11 +8,5,5 +7,9,3 +5,14,7 +6,16,8 +10,8,17 +17,9,5 +9,5,13 +11,5,3 +7,10,0 +14,5,12 +6,16,15 +15,9,13 +7,2,11 +10,2,13 +5,4,8 +16,12,7 +15,3,10 +13,3,8 +3,15,8 +4,4,12 +11,8,16 +18,12,7 +4,9,3 +13,3,15 +11,13,3 +4,12,10 +6,4,11 +3,6,9 +7,3,5 +14,9,4 +4,4,9 +17,9,10 +5,17,8 +10,9,17 +9,2,8 +16,7,15 +13,9,4 +7,8,17 +3,13,9 +9,5,6 +2,8,14 +10,16,11 +14,14,12 +8,1,12 +9,3,7 +8,15,3 +13,7,16 +15,3,12 +12,15,12 +12,8,3 +11,5,16 +10,15,12 +7,13,5 +6,7,4 +13,16,10 +16,13,5 +6,3,14 +13,2,13 +8,17,8 +18,12,8 +16,9,3 +7,15,15 +6,16,9 +7,14,13 +11,14,15 +11,6,16 +8,13,2 +14,13,7 +4,15,14 +4,6,3 +2,12,5 +15,3,7 +5,2,7 +2,15,8 +3,13,8 +16,4,9 +7,2,13 +10,8,3 +4,5,8 +6,4,16 +10,14,4 +7,11,15 +3,9,8 +5,6,10 +14,4,15 +8,9,18 +8,5,2 +7,5,15 +5,16,13 +14,17,12 +7,3,4 +16,12,4 +10,16,10 +12,2,13 +14,4,4 +3,14,13 +14,12,14 +14,7,3 +9,16,4 +9,15,2 +9,10,0 +3,9,6 +5,3,14 +12,16,11 +6,4,7 +6,3,12 +7,16,3 +16,7,4 +7,6,17 +14,9,17 +7,3,13 +15,12,5 +9,10,1 +15,15,10 +6,17,9 +7,4,7 +15,4,4 +10,11,18 +16,5,6 +15,15,9 +15,16,13 +11,1,12 +11,6,18 +4,7,11 +18,10,8 +15,15,8 +3,12,12 +10,1,10 +6,3,9 +12,4,16 +3,8,12 +6,15,4 +13,6,8 +16,5,12 +10,4,16 +6,14,14 +18,9,9 +8,1,8 +12,1,11 +13,3,9 +7,3,8 +14,12,17 +11,4,16 +2,12,7 +14,4,11 +10,13,17 +7,3,11 +17,7,12 +6,15,7 +10,5,5 +4,17,9 +2,9,9 +3,13,6 +6,16,7 +15,10,7 +1,12,9 +8,8,16 +12,16,7 +3,5,15 +8,15,16 +6,7,2 +9,5,15 +4,7,7 +2,7,5 +7,5,17 +8,5,12 +16,3,9 +12,6,4 +11,15,11 +12,10,16 +16,7,10 +15,13,6 +8,2,4 +2,7,13 +17,12,14 +14,10,15 +12,3,15 +4,9,5 +4,14,5 +16,7,8 +7,11,4 +8,13,18 +7,1,8 +8,10,17 +14,15,11 +3,8,3 +6,17,13 +6,4,3 +11,12,15 +6,17,8 +5,17,11 +11,7,17 +1,11,8 +9,17,5 +12,12,5 +8,15,5 +4,7,15 +8,14,6 +4,17,8 +17,10,11 +7,10,16 +13,7,17 +3,9,15 +16,11,11 +9,12,15 +16,5,13 +5,3,13 +9,6,1 +12,9,4 +14,13,17 +11,10,16 +11,4,5 +13,17,13 +10,18,6 +14,3,15 +5,10,5 +6,12,17 +7,16,10 +15,5,4 +6,3,4 +5,14,10 +12,5,13 +13,4,8 +7,4,13 +15,13,12 +16,6,15 +17,7,14 +8,1,11 +2,10,14 +5,2,11 +9,3,8 +6,11,18 +8,13,17 +4,15,5 +14,3,6 +12,8,17 +5,15,15 +5,15,16 +3,8,16 +4,9,4 +1,9,10 +10,5,2 +9,4,5 +14,6,13 +9,18,7 +6,4,4 +16,13,12 +13,10,14 +15,12,8 +15,12,6 +10,11,14 +9,3,11 +8,2,15 +6,2,6 +16,4,6 +13,13,6 +15,10,17 +1,7,6 +7,9,4 +7,10,4 +2,5,6 +8,4,3 +11,6,17 +16,6,8 +8,0,8 +7,16,11 +10,2,14 +8,7,18 +3,11,11 +10,17,5 +10,16,5 +16,15,13 +8,9,3 +13,11,14 +7,19,8 +12,3,11 +10,2,5 +3,6,10 +12,4,13 +4,9,16 +18,8,8 +9,17,15 +9,3,3 +2,5,13 +5,9,5 +10,12,3 +15,4,10 +16,12,10 +18,12,13 +15,7,6 +4,16,9 +9,13,15 +14,9,2 +7,13,18 +7,4,11 +15,6,9 +9,8,1 +10,8,2 +18,6,8 +12,4,7 +10,18,13 +14,8,5 +16,6,14 +8,18,8 +2,9,4 +18,11,6 +15,11,5 +15,10,12 +7,8,1 +4,15,13 +16,9,12 +10,14,14 +16,13,15 +10,12,18 +7,15,6 +16,12,15 +4,5,11 +7,3,15 +6,7,17 +3,4,11 +5,6,16 +9,3,16 +5,10,3 +11,8,0 +12,11,14 +10,10,19 +14,12,9 +6,15,3 +6,14,13 +17,13,11 +6,9,5 +16,9,14 +9,12,4 +13,6,6 +16,15,11 +15,9,6 +2,5,7 +13,4,10 +14,17,10 +9,16,6 +18,9,12 +11,17,5 +4,10,13 +5,11,14 +8,13,14 +15,9,7 +6,4,8 +7,7,4 +12,16,12 +12,13,3 +11,9,3 +14,12,13 +16,10,6 +1,5,11 +18,6,10 +16,10,12 +13,4,9 +7,6,4 +3,16,10 +6,11,17 +13,14,10 +13,17,12 +6,18,7 +10,18,9 +5,8,4 +14,2,10 +15,12,7 +2,6,12 +12,11,2 +6,13,12 +18,8,7 +13,5,6 +2,15,10 +14,7,6 +13,5,7 +13,13,5 +15,10,3 +12,16,9 +4,11,13 +18,11,7 +9,14,17 +5,2,10 +1,6,11 +14,16,14 +15,10,11 +1,10,8 +18,10,13 +1,10,11 +11,3,16 +8,10,2 +6,10,2 +9,1,14 +11,5,13 +4,13,10 +9,1,7 +3,10,10 +15,5,12 +17,8,9 +8,4,10 +13,15,7 +10,13,4 +8,5,15 +6,17,6 +15,12,9 +13,3,4 +15,12,12 +4,11,6 +15,16,12 +11,10,18 +13,13,13 +12,12,15 +9,6,14 +13,14,7 diff --git a/src/2022/day18/input0 b/src/2022/day18/input0 new file mode 100644 index 0000000..73a7202 --- /dev/null +++ b/src/2022/day18/input0 @@ -0,0 +1,13 @@ +2,2,2 +1,2,2 +3,2,2 +2,1,2 +2,3,2 +2,2,1 +2,2,3 +2,2,4 +2,2,6 +1,2,5 +3,2,5 +2,1,5 +2,3,5 diff --git a/src/2022/day19/README.md b/src/2022/day19/README.md new file mode 100644 index 0000000..85b3e9f --- /dev/null +++ b/src/2022/day19/README.md @@ -0,0 +1,167 @@ +--- Day 19: Not Enough Minerals --- +Your scans show that the lava did indeed form obsidian! + +The wind has changed direction enough to stop sending lava droplets toward you, so you and the elephants exit the cave. As you do, you notice a collection of geodes around the pond. Perhaps you could use the obsidian to create some geode-cracking robots and break them open? + +To collect the obsidian from the bottom of the pond, you'll need waterproof obsidian-collecting robots. Fortunately, there is an abundant amount of clay nearby that you can use to make them waterproof. + +In order to harvest the clay, you'll need special-purpose clay-collecting robots. To make any type of robot, you'll need ore, which is also plentiful but in the opposite direction from the clay. + +Collecting ore requires ore-collecting robots with big drills. Fortunately, you have exactly one ore-collecting robot in your pack that you can use to kickstart the whole operation. + +Each robot can collect 1 of its resource type per minute. It also takes one minute for the robot factory (also conveniently from your pack) to construct any type of robot, although it consumes the necessary resources available when construction begins. + +The robot factory has many blueprints (your puzzle input) you can choose from, but once you've configured it with a blueprint, you can't change it. You'll need to work out which blueprint is best. + +For example: + +Blueprint 1: + Each ore robot costs 4 ore. + Each clay robot costs 2 ore. + Each obsidian robot costs 3 ore and 14 clay. + Each geode robot costs 2 ore and 7 obsidian. + +Blueprint 2: + Each ore robot costs 2 ore. + Each clay robot costs 3 ore. + Each obsidian robot costs 3 ore and 8 clay. + Each geode robot costs 3 ore and 12 obsidian. +(Blueprints have been line-wrapped here for legibility. The robot factory's actual assortment of blueprints are provided one blueprint per line.) + +The elephants are starting to look hungry, so you shouldn't take too long; you need to figure out which blueprint would maximize the number of opened geodes after 24 minutes by figuring out which robots to build and when to build them. + +Using blueprint 1 in the example above, the largest number of geodes you could open in 24 minutes is 9. One way to achieve that is: + +== Minute 1 == +1 ore-collecting robot collects 1 ore; you now have 1 ore. + +== Minute 2 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. + +== Minute 3 == +Spend 2 ore to start building a clay-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 1 ore. +The new clay-collecting robot is ready; you now have 1 of them. + +== Minute 4 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. +1 clay-collecting robot collects 1 clay; you now have 1 clay. + +== Minute 5 == +Spend 2 ore to start building a clay-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 1 ore. +1 clay-collecting robot collects 1 clay; you now have 2 clay. +The new clay-collecting robot is ready; you now have 2 of them. + +== Minute 6 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. +2 clay-collecting robots collect 2 clay; you now have 4 clay. + +== Minute 7 == +Spend 2 ore to start building a clay-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 1 ore. +2 clay-collecting robots collect 2 clay; you now have 6 clay. +The new clay-collecting robot is ready; you now have 3 of them. + +== Minute 8 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. +3 clay-collecting robots collect 3 clay; you now have 9 clay. + +== Minute 9 == +1 ore-collecting robot collects 1 ore; you now have 3 ore. +3 clay-collecting robots collect 3 clay; you now have 12 clay. + +== Minute 10 == +1 ore-collecting robot collects 1 ore; you now have 4 ore. +3 clay-collecting robots collect 3 clay; you now have 15 clay. + +== Minute 11 == +Spend 3 ore and 14 clay to start building an obsidian-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 2 ore. +3 clay-collecting robots collect 3 clay; you now have 4 clay. +The new obsidian-collecting robot is ready; you now have 1 of them. + +== Minute 12 == +Spend 2 ore to start building a clay-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 1 ore. +3 clay-collecting robots collect 3 clay; you now have 7 clay. +1 obsidian-collecting robot collects 1 obsidian; you now have 1 obsidian. +The new clay-collecting robot is ready; you now have 4 of them. + +== Minute 13 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. +4 clay-collecting robots collect 4 clay; you now have 11 clay. +1 obsidian-collecting robot collects 1 obsidian; you now have 2 obsidian. + +== Minute 14 == +1 ore-collecting robot collects 1 ore; you now have 3 ore. +4 clay-collecting robots collect 4 clay; you now have 15 clay. +1 obsidian-collecting robot collects 1 obsidian; you now have 3 obsidian. + +== Minute 15 == +Spend 3 ore and 14 clay to start building an obsidian-collecting robot. +1 ore-collecting robot collects 1 ore; you now have 1 ore. +4 clay-collecting robots collect 4 clay; you now have 5 clay. +1 obsidian-collecting robot collects 1 obsidian; you now have 4 obsidian. +The new obsidian-collecting robot is ready; you now have 2 of them. + +== Minute 16 == +1 ore-collecting robot collects 1 ore; you now have 2 ore. +4 clay-collecting robots collect 4 clay; you now have 9 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 6 obsidian. + +== Minute 17 == +1 ore-collecting robot collects 1 ore; you now have 3 ore. +4 clay-collecting robots collect 4 clay; you now have 13 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 8 obsidian. + +== Minute 18 == +Spend 2 ore and 7 obsidian to start building a geode-cracking robot. +1 ore-collecting robot collects 1 ore; you now have 2 ore. +4 clay-collecting robots collect 4 clay; you now have 17 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 3 obsidian. +The new geode-cracking robot is ready; you now have 1 of them. + +== Minute 19 == +1 ore-collecting robot collects 1 ore; you now have 3 ore. +4 clay-collecting robots collect 4 clay; you now have 21 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 5 obsidian. +1 geode-cracking robot cracks 1 geode; you now have 1 open geode. + +== Minute 20 == +1 ore-collecting robot collects 1 ore; you now have 4 ore. +4 clay-collecting robots collect 4 clay; you now have 25 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 7 obsidian. +1 geode-cracking robot cracks 1 geode; you now have 2 open geodes. + +== Minute 21 == +Spend 2 ore and 7 obsidian to start building a geode-cracking robot. +1 ore-collecting robot collects 1 ore; you now have 3 ore. +4 clay-collecting robots collect 4 clay; you now have 29 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 2 obsidian. +1 geode-cracking robot cracks 1 geode; you now have 3 open geodes. +The new geode-cracking robot is ready; you now have 2 of them. + +== Minute 22 == +1 ore-collecting robot collects 1 ore; you now have 4 ore. +4 clay-collecting robots collect 4 clay; you now have 33 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 4 obsidian. +2 geode-cracking robots crack 2 geodes; you now have 5 open geodes. + +== Minute 23 == +1 ore-collecting robot collects 1 ore; you now have 5 ore. +4 clay-collecting robots collect 4 clay; you now have 37 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 6 obsidian. +2 geode-cracking robots crack 2 geodes; you now have 7 open geodes. + +== Minute 24 == +1 ore-collecting robot collects 1 ore; you now have 6 ore. +4 clay-collecting robots collect 4 clay; you now have 41 clay. +2 obsidian-collecting robots collect 2 obsidian; you now have 8 obsidian. +2 geode-cracking robots crack 2 geodes; you now have 9 open geodes. +However, by using blueprint 2 in the example above, you could do even better: the largest number of geodes you could open in 24 minutes is 12. + +Determine the quality level of each blueprint by multiplying that blueprint's ID number with the largest number of geodes that can be opened in 24 minutes using that blueprint. In this example, the first blueprint has ID 1 and can open 9 geodes, so its quality level is 9. The second blueprint has ID 2 and can open 12 geodes, so its quality level is 24. Finally, if you add up the quality levels of all of the blueprints in the list, you get 33. + +Determine the quality level of each blueprint using the largest number of geodes it could produce in 24 minutes. What do you get if you add up the quality level of all of the blueprints in your list? + diff --git a/src/2022/day19/aoc.cpp b/src/2022/day19/aoc.cpp new file mode 100644 index 0000000..2b3a56e --- /dev/null +++ b/src/2022/day19/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day19(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day19/aoc.h b/src/2022/day19/aoc.h new file mode 100644 index 0000000..dfa4e9d --- /dev/null +++ b/src/2022/day19/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day19(line_view); +} diff --git a/src/2022/day19/input b/src/2022/day19/input new file mode 100644 index 0000000..1a45b2c --- /dev/null +++ b/src/2022/day19/input @@ -0,0 +1,30 @@ +Blueprint 1: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 2 ore and 9 obsidian. +Blueprint 2: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 14 clay. Each geode robot costs 2 ore and 16 obsidian. +Blueprint 3: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 12 clay. Each geode robot costs 3 ore and 8 obsidian. +Blueprint 4: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 14 clay. Each geode robot costs 3 ore and 8 obsidian. +Blueprint 5: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 15 clay. Each geode robot costs 3 ore and 7 obsidian. +Blueprint 6: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 2 ore and 10 obsidian. +Blueprint 7: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 16 clay. Each geode robot costs 3 ore and 14 obsidian. +Blueprint 8: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 7 clay. Each geode robot costs 3 ore and 8 obsidian. +Blueprint 9: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 17 clay. Each geode robot costs 3 ore and 11 obsidian. +Blueprint 10: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 6 clay. Each geode robot costs 4 ore and 11 obsidian. +Blueprint 11: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 9 clay. Each geode robot costs 3 ore and 15 obsidian. +Blueprint 12: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 14 clay. Each geode robot costs 3 ore and 16 obsidian. +Blueprint 13: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 4 ore and 14 obsidian. +Blueprint 14: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 19 clay. Each geode robot costs 2 ore and 12 obsidian. +Blueprint 15: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 9 clay. Each geode robot costs 3 ore and 9 obsidian. +Blueprint 16: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 4 ore and 19 clay. Each geode robot costs 4 ore and 12 obsidian. +Blueprint 17: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 17 clay. Each geode robot costs 4 ore and 16 obsidian. +Blueprint 18: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 7 clay. Each geode robot costs 2 ore and 9 obsidian. +Blueprint 19: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 18 clay. Each geode robot costs 4 ore and 12 obsidian. +Blueprint 20: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 4 ore and 13 obsidian. +Blueprint 21: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 19 clay. Each geode robot costs 2 ore and 12 obsidian. +Blueprint 22: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 2 ore and 18 obsidian. +Blueprint 23: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 13 clay. Each geode robot costs 2 ore and 9 obsidian. +Blueprint 24: Each ore robot costs 2 ore. Each clay robot costs 2 ore. Each obsidian robot costs 2 ore and 10 clay. Each geode robot costs 2 ore and 11 obsidian. +Blueprint 25: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 3 ore and 14 obsidian. +Blueprint 26: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 18 clay. Each geode robot costs 2 ore and 19 obsidian. +Blueprint 27: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 20 clay. Each geode robot costs 4 ore and 7 obsidian. +Blueprint 28: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 4 ore and 18 clay. Each geode robot costs 4 ore and 11 obsidian. +Blueprint 29: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 3 ore and 7 obsidian. +Blueprint 30: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 4 ore and 20 clay. Each geode robot costs 4 ore and 8 obsidian. diff --git a/src/2022/day19/input0 b/src/2022/day19/input0 new file mode 100644 index 0000000..f39c094 --- /dev/null +++ b/src/2022/day19/input0 @@ -0,0 +1,2 @@ +Blueprint 1: Each ore robot costs 4 ore. Each clay robot costs 2 ore. Each obsidian robot costs 3 ore and 14 clay. Each geode robot costs 2 ore and 7 obsidian. +Blueprint 2: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 8 clay. Each geode robot costs 3 ore and 12 obsidian. diff --git a/src/2022/day20/README.md b/src/2022/day20/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day20/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day20/aoc.cpp b/src/2022/day20/aoc.cpp new file mode 100644 index 0000000..8d1d6ca --- /dev/null +++ b/src/2022/day20/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day20(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day20/aoc.h b/src/2022/day20/aoc.h new file mode 100644 index 0000000..85d05b0 --- /dev/null +++ b/src/2022/day20/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day20(line_view); +} diff --git a/src/2022/day20/input b/src/2022/day20/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day20/input diff --git a/src/2022/day20/input0 b/src/2022/day20/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day20/input0 diff --git a/src/2022/day21/README.md b/src/2022/day21/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day21/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day21/aoc.cpp b/src/2022/day21/aoc.cpp new file mode 100644 index 0000000..8bc9411 --- /dev/null +++ b/src/2022/day21/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day21(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day21/aoc.h b/src/2022/day21/aoc.h new file mode 100644 index 0000000..388265c --- /dev/null +++ b/src/2022/day21/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day21(line_view); +} diff --git a/src/2022/day21/input b/src/2022/day21/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day21/input diff --git a/src/2022/day21/input0 b/src/2022/day21/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day21/input0 diff --git a/src/2022/day22/README.md b/src/2022/day22/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day22/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day22/aoc.cpp b/src/2022/day22/aoc.cpp new file mode 100644 index 0000000..c7ed99f --- /dev/null +++ b/src/2022/day22/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day22(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day22/aoc.h b/src/2022/day22/aoc.h new file mode 100644 index 0000000..de85db9 --- /dev/null +++ b/src/2022/day22/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day22(line_view); +} diff --git a/src/2022/day22/input b/src/2022/day22/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day22/input diff --git a/src/2022/day22/input0 b/src/2022/day22/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day22/input0 diff --git a/src/2022/day23/README.md b/src/2022/day23/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day23/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day23/aoc.cpp b/src/2022/day23/aoc.cpp new file mode 100644 index 0000000..825e67a --- /dev/null +++ b/src/2022/day23/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day23(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day23/aoc.h b/src/2022/day23/aoc.h new file mode 100644 index 0000000..49805cc --- /dev/null +++ b/src/2022/day23/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day23(line_view); +} diff --git a/src/2022/day23/input b/src/2022/day23/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day23/input diff --git a/src/2022/day23/input0 b/src/2022/day23/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day23/input0 diff --git a/src/2022/day24/README.md b/src/2022/day24/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day24/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day24/aoc.cpp b/src/2022/day24/aoc.cpp new file mode 100644 index 0000000..5fd801b --- /dev/null +++ b/src/2022/day24/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day24(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day24/aoc.h b/src/2022/day24/aoc.h new file mode 100644 index 0000000..920f69c --- /dev/null +++ b/src/2022/day24/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day24(line_view); +} diff --git a/src/2022/day24/input b/src/2022/day24/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day24/input diff --git a/src/2022/day24/input0 b/src/2022/day24/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day24/input0 diff --git a/src/2022/day25/README.md b/src/2022/day25/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/2022/day25/README.md @@ -0,0 +1 @@ + diff --git a/src/2022/day25/aoc.cpp b/src/2022/day25/aoc.cpp new file mode 100644 index 0000000..2cc6057 --- /dev/null +++ b/src/2022/day25/aoc.cpp @@ -0,0 +1,9 @@ +#include "aoc.h" + +namespace aoc2022 { + +std::pair<int, int> day25(line_view) { + return {0, 0}; +} +} + diff --git a/src/2022/day25/aoc.h b/src/2022/day25/aoc.h new file mode 100644 index 0000000..ab55efd --- /dev/null +++ b/src/2022/day25/aoc.h @@ -0,0 +1,7 @@ +#include "common.h" +#include <vector> + +namespace aoc2022 { + +std::pair<int, int> day25(line_view); +} diff --git a/src/2022/day25/input b/src/2022/day25/input new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day25/input diff --git a/src/2022/day25/input0 b/src/2022/day25/input0 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/2022/day25/input0 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5b9c91a..c0acd07 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -102,6 +102,14 @@ set(SOLUTION_FILES "2022/day15/aoc.cpp" "2022/day16/aoc.cpp" "2022/day17/aoc.cpp" + "2022/day18/aoc.cpp" + "2022/day19/aoc.cpp" + "2022/day20/aoc.cpp" + "2022/day21/aoc.cpp" + "2022/day22/aoc.cpp" + "2022/day23/aoc.cpp" + "2022/day24/aoc.cpp" + "2022/day25/aoc.cpp" ) add_library(solution SHARED ${SOLUTION_FILES}) |