194 lines
5.4 KiB
Plaintext
194 lines
5.4 KiB
Plaintext
|
Advent of Code
|
||
|
|
||
|
--- Day 14: Restroom Redoubt ---
|
||
|
|
||
|
One of The Historians needs to use the bathroom; fortunately, you know
|
||
|
there's a bathroom near an unvisited location on their list, and so you're
|
||
|
all quickly teleported directly to the lobby of Easter Bunny Headquarters.
|
||
|
|
||
|
Unfortunately, EBHQ seems to have "improved" bathroom security again after
|
||
|
your last [16]visit. The area outside the bathroom is swarming with
|
||
|
robots!
|
||
|
|
||
|
To get The Historian safely to the bathroom, you'll need a way to predict
|
||
|
where the robots will be in the future. Fortunately, they all seem to be
|
||
|
moving on the tile floor in predictable straight lines.
|
||
|
|
||
|
You make a list (your puzzle input) of all of the robots' current
|
||
|
positions (p) and velocities (v), one robot per line. For example:
|
||
|
|
||
|
p=0,4 v=3,-3
|
||
|
p=6,3 v=-1,-3
|
||
|
p=10,3 v=-1,2
|
||
|
p=2,0 v=2,-1
|
||
|
p=0,0 v=1,3
|
||
|
p=3,0 v=-2,-2
|
||
|
p=7,6 v=-1,-3
|
||
|
p=3,0 v=-1,-2
|
||
|
p=9,3 v=2,3
|
||
|
p=7,3 v=-1,2
|
||
|
p=2,4 v=2,-3
|
||
|
p=9,5 v=-3,-3
|
||
|
|
||
|
Each robot's position is given as p=x,y where x represents the number of
|
||
|
tiles the robot is from the left wall and y represents the number of tiles
|
||
|
from the top wall (when viewed from above). So, a position of p=0,0 means
|
||
|
the robot is all the way in the top-left corner.
|
||
|
|
||
|
Each robot's velocity is given as v=x,y where x and y are given in tiles
|
||
|
per second. Positive x means the robot is moving to the right, and
|
||
|
positive y means the robot is moving down. So, a velocity of v=1,-2 means
|
||
|
that each second, the robot moves 1 tile to the right and 2 tiles up.
|
||
|
|
||
|
The robots outside the actual bathroom are in a space which is 101 tiles
|
||
|
wide and 103 tiles tall (when viewed from above). However, in this
|
||
|
example, the robots are in a space which is only 11 tiles wide and 7 tiles
|
||
|
tall.
|
||
|
|
||
|
The robots are good at navigating over/under each other (due to a
|
||
|
combination of springs, extendable legs, and quadcopters), so they can
|
||
|
share the same tile and don't interact with each other. Visually, the
|
||
|
number of robots on each tile in this example looks like this:
|
||
|
|
||
|
1.12.......
|
||
|
...........
|
||
|
...........
|
||
|
......11.11
|
||
|
1.1........
|
||
|
.........1.
|
||
|
.......1...
|
||
|
|
||
|
These robots have a unique feature for maximum bathroom security: they can
|
||
|
teleport. When a robot would run into an edge of the space they're in,
|
||
|
they instead teleport to the other side, effectively wrapping around the
|
||
|
edges. Here is what robot p=2,4 v=2,-3 does for the first few seconds:
|
||
|
|
||
|
Initial state:
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
..1........
|
||
|
...........
|
||
|
...........
|
||
|
|
||
|
After 1 second:
|
||
|
...........
|
||
|
....1......
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
|
||
|
After 2 seconds:
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
......1....
|
||
|
...........
|
||
|
|
||
|
After 3 seconds:
|
||
|
...........
|
||
|
...........
|
||
|
........1..
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
|
||
|
After 4 seconds:
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
..........1
|
||
|
|
||
|
After 5 seconds:
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
.1.........
|
||
|
...........
|
||
|
...........
|
||
|
...........
|
||
|
|
||
|
The Historian can't wait much longer, so you don't have to simulate the
|
||
|
robots for very long. Where will the robots be after 100 seconds?
|
||
|
|
||
|
In the above example, the number of robots on each tile after 100 seconds
|
||
|
has elapsed looks like this:
|
||
|
|
||
|
......2..1.
|
||
|
...........
|
||
|
1..........
|
||
|
.11........
|
||
|
.....1.....
|
||
|
...12......
|
||
|
.1....1....
|
||
|
|
||
|
To determine the safest area, count the number of robots in each quadrant
|
||
|
after 100 seconds. Robots that are exactly in the middle (horizontally or
|
||
|
vertically) don't count as being in any quadrant, so the only relevant
|
||
|
robots are:
|
||
|
|
||
|
..... 2..1.
|
||
|
..... .....
|
||
|
1.... .....
|
||
|
|
||
|
..... .....
|
||
|
...12 .....
|
||
|
.1... 1....
|
||
|
|
||
|
In this example, the quadrants contain 1, 3, 4, and 1 robot. Multiplying
|
||
|
these together gives a total safety factor of 12.
|
||
|
|
||
|
Predict the motion of the robots in your list within a space which is 101
|
||
|
tiles wide and 103 tiles tall. What will the safety factor be after
|
||
|
exactly 100 seconds have elapsed?
|
||
|
|
||
|
Your puzzle answer was 218965032.
|
||
|
|
||
|
--- Part Two ---
|
||
|
|
||
|
During the bathroom break, someone notices that these robots seem awfully
|
||
|
similar to ones built and used at the North Pole. If they're the same type
|
||
|
of robots, they should have a hard-coded Easter egg: very rarely, most of
|
||
|
the robots should arrange themselves into a picture of a Christmas tree.
|
||
|
|
||
|
What is the fewest number of seconds that must elapse for the robots to
|
||
|
display the Easter egg?
|
||
|
|
||
|
Your puzzle answer was 7037.
|
||
|
|
||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||
|
|
||
|
At this point, you should [17]return to your Advent calendar and try
|
||
|
another puzzle.
|
||
|
|
||
|
If you still want to see it, you can [18]get your puzzle input.
|
||
|
|
||
|
References
|
||
|
|
||
|
Visible links
|
||
|
1. https://adventofcode.com/
|
||
|
2. https://adventofcode.com/2024/about
|
||
|
3. https://adventofcode.com/2024/events
|
||
|
4. https://cottonbureau.com/people/advent-of-code
|
||
|
5. https://adventofcode.com/2024/settings
|
||
|
6. https://adventofcode.com/2024/auth/logout
|
||
|
7. Advent of Code Supporter
|
||
|
https://adventofcode.com/2024/support
|
||
|
8. https://adventofcode.com/2024
|
||
|
9. https://adventofcode.com/2024
|
||
|
10. https://adventofcode.com/2024/support
|
||
|
12. https://adventofcode.com/2024/leaderboard
|
||
|
13. https://adventofcode.com/2024/stats
|
||
|
16. https://adventofcode.com/2016/day/2
|
||
|
17. https://adventofcode.com/2024
|
||
|
18. https://adventofcode.com/2024/day/14/input
|