2023 Day 10 Complete!
This commit is contained in:
310
2023/day10/problem
Normal file
310
2023/day10/problem
Normal file
@@ -0,0 +1,310 @@
|
||||
[1]Advent of Code
|
||||
|
||||
• [2][About]
|
||||
• [3][Events]
|
||||
• [4][Shop]
|
||||
• [5][Settings]
|
||||
• [6][Log Out]
|
||||
|
||||
br0xen [7](AoC++) 20*
|
||||
|
||||
//[8]2023
|
||||
|
||||
• [9][Calendar]
|
||||
• [10][AoC++]
|
||||
• [11][Sponsors]
|
||||
• [12][Leaderboard]
|
||||
• [13][Stats]
|
||||
|
||||
Our [14]sponsors help make Advent of Code possible:
|
||||
[15]Kotlin by JetBrains - Jingle bells, Kotlin pals, coding all the way!
|
||||
Solve puzzles, catch our daily livestreams for expert guidance, embrace
|
||||
the joy of Kotlin, and engage with a fantastic community. Happy holidays
|
||||
and happy coding!
|
||||
|
||||
--- Day 10: Pipe Maze ---
|
||||
|
||||
You use the hang glider to ride the hot air from Desert Island all the way
|
||||
up to the floating metal island. This island is surprisingly cold and
|
||||
there definitely aren't any thermals to glide on, so you leave your hang
|
||||
glider behind.
|
||||
|
||||
You wander around for a while, but you don't find any people or animals.
|
||||
However, you do occasionally find signposts labeled "[16]Hot Springs"
|
||||
pointing in a seemingly consistent direction; maybe you can find someone
|
||||
at the hot springs and ask them where the desert-machine parts are made.
|
||||
|
||||
The landscape here is alien; even the flowers and trees are made of metal.
|
||||
As you stop to admire some metal grass, you notice something metallic
|
||||
scurry away in your peripheral vision and jump into a big pipe! It didn't
|
||||
look like any animal you've ever seen; if you want a better look, you'll
|
||||
need to get ahead of it.
|
||||
|
||||
Scanning the area, you discover that the entire field you're standing on
|
||||
is densely packed with pipes; it was hard to tell at first because they're
|
||||
the same metallic silver color as the "ground". You make a quick sketch of
|
||||
all of the surface pipes you can see (your puzzle input).
|
||||
|
||||
The pipes are arranged in a two-dimensional grid of tiles:
|
||||
|
||||
• | is a vertical pipe connecting north and south.
|
||||
• - is a horizontal pipe connecting east and west.
|
||||
• L is a 90-degree bend connecting north and east.
|
||||
• J is a 90-degree bend connecting north and west.
|
||||
• 7 is a 90-degree bend connecting south and west.
|
||||
• F is a 90-degree bend connecting south and east.
|
||||
• . is ground; there is no pipe in this tile.
|
||||
• S is the starting position of the animal; there is a pipe on this
|
||||
tile, but your sketch doesn't show what shape the pipe has.
|
||||
|
||||
Based on the acoustics of the animal's scurrying, you're confident the
|
||||
pipe that contains the animal is one large, continuous loop.
|
||||
|
||||
For example, here is a square loop of pipe:
|
||||
|
||||
.....
|
||||
.F-7.
|
||||
.|.|.
|
||||
.L-J.
|
||||
.....
|
||||
|
||||
If the animal had entered this loop in the northwest corner, the sketch
|
||||
would instead look like this:
|
||||
|
||||
.....
|
||||
.S-7.
|
||||
.|.|.
|
||||
.L-J.
|
||||
.....
|
||||
|
||||
In the above diagram, the S tile is still a 90-degree F bend: you can tell
|
||||
because of how the adjacent pipes connect to it.
|
||||
|
||||
Unfortunately, there are also many pipes that aren't connected to the
|
||||
loop! This sketch shows the same loop as above:
|
||||
|
||||
-L|F7
|
||||
7S-7|
|
||||
L|7||
|
||||
-L-J|
|
||||
L|-JF
|
||||
|
||||
In the above diagram, you can still figure out which pipes form the main
|
||||
loop: they're the ones connected to S, pipes those pipes connect to, pipes
|
||||
those pipes connect to, and so on. Every pipe in the main loop connects to
|
||||
its two neighbors (including S, which will have exactly two pipes
|
||||
connecting to it, and which is assumed to connect back to those two
|
||||
pipes).
|
||||
|
||||
Here is a sketch that contains a slightly more complex main loop:
|
||||
|
||||
..F7.
|
||||
.FJ|.
|
||||
SJ.L7
|
||||
|F--J
|
||||
LJ...
|
||||
|
||||
Here's the same example sketch with the extra, non-main-loop pipe tiles
|
||||
also shown:
|
||||
|
||||
7-F7-
|
||||
.FJ|7
|
||||
SJLL7
|
||||
|F--J
|
||||
LJ.LJ
|
||||
|
||||
If you want to get out ahead of the animal, you should find the tile in
|
||||
the loop that is farthest from the starting position. Because the animal
|
||||
is in the pipe, it doesn't make sense to measure this by direct distance.
|
||||
Instead, you need to find the tile that would take the longest number of
|
||||
steps along the loop to reach from the starting point - regardless of
|
||||
which way around the loop the animal went.
|
||||
|
||||
In the first example with the square loop:
|
||||
|
||||
.....
|
||||
.S-7.
|
||||
.|.|.
|
||||
.L-J.
|
||||
.....
|
||||
|
||||
You can count the distance each tile in the loop is from the starting
|
||||
point like this:
|
||||
|
||||
.....
|
||||
.012.
|
||||
.1.3.
|
||||
.234.
|
||||
.....
|
||||
|
||||
In this example, the farthest point from the start is 4 steps away.
|
||||
|
||||
Here's the more complex loop again:
|
||||
|
||||
..F7.
|
||||
.FJ|.
|
||||
SJ.L7
|
||||
|F--J
|
||||
LJ...
|
||||
|
||||
Here are the distances for each tile on that loop:
|
||||
|
||||
..45.
|
||||
.236.
|
||||
01.78
|
||||
14567
|
||||
23...
|
||||
|
||||
Find the single giant loop starting at S. How many steps along the loop
|
||||
does it take to get from the starting position to the point farthest from
|
||||
the starting position?
|
||||
|
||||
Your puzzle answer was 6942.
|
||||
|
||||
--- Part Two ---
|
||||
|
||||
You quickly reach the farthest point of the loop, but the animal never
|
||||
emerges. Maybe its nest is within the area enclosed by the loop?
|
||||
|
||||
To determine whether it's even worth taking the time to search for such a
|
||||
nest, you should calculate how many tiles are contained within the loop.
|
||||
For example:
|
||||
|
||||
...........
|
||||
.S-------7.
|
||||
.|F-----7|.
|
||||
.||.....||.
|
||||
.||.....||.
|
||||
.|L-7.F-J|.
|
||||
.|..|.|..|.
|
||||
.L--J.L--J.
|
||||
...........
|
||||
|
||||
The above loop encloses merely four tiles - the two pairs of . in the
|
||||
southwest and southeast (marked I below). The middle . tiles (marked O
|
||||
below) are not in the loop. Here is the same loop again with those regions
|
||||
marked:
|
||||
|
||||
...........
|
||||
.S-------7.
|
||||
.|F-----7|.
|
||||
.||OOOOO||.
|
||||
.||OOOOO||.
|
||||
.|L-7OF-J|.
|
||||
.|II|O|II|.
|
||||
.L--JOL--J.
|
||||
.....O.....
|
||||
|
||||
In fact, there doesn't even need to be a full tile path to the outside for
|
||||
tiles to count as outside the loop - squeezing between pipes is also
|
||||
allowed! Here, I is still within the loop and O is still outside the loop:
|
||||
|
||||
..........
|
||||
.S------7.
|
||||
.|F----7|.
|
||||
.||OOOO||.
|
||||
.||OOOO||.
|
||||
.|L-7F-J|.
|
||||
.|II||II|.
|
||||
.L--JL--J.
|
||||
..........
|
||||
|
||||
In both of the above examples, 4 tiles are enclosed by the loop.
|
||||
|
||||
Here's a larger example:
|
||||
|
||||
.F----7F7F7F7F-7....
|
||||
.|F--7||||||||FJ....
|
||||
.||.FJ||||||||L7....
|
||||
FJL7L7LJLJ||LJ.L-7..
|
||||
L--J.L7...LJS7F-7L7.
|
||||
....F-J..F7FJ|L7L7L7
|
||||
....L7.F7||L7|.L7L7|
|
||||
.....|FJLJ|FJ|F7|.LJ
|
||||
....FJL-7.||.||||...
|
||||
....L---J.LJ.LJLJ...
|
||||
|
||||
The above sketch has many random bits of ground, some of which are in the
|
||||
loop (I) and some of which are outside it (O):
|
||||
|
||||
OF----7F7F7F7F-7OOOO
|
||||
O|F--7||||||||FJOOOO
|
||||
O||OFJ||||||||L7OOOO
|
||||
FJL7L7LJLJ||LJIL-7OO
|
||||
L--JOL7IIILJS7F-7L7O
|
||||
OOOOF-JIIF7FJ|L7L7L7
|
||||
OOOOL7IF7||L7|IL7L7|
|
||||
OOOOO|FJLJ|FJ|F7|OLJ
|
||||
OOOOFJL-7O||O||||OOO
|
||||
OOOOL---JOLJOLJLJOOO
|
||||
|
||||
In this larger example, 8 tiles are enclosed by the loop.
|
||||
|
||||
Any tile that isn't part of the main loop can count as being enclosed by
|
||||
the loop. Here's another example with many bits of junk pipe lying around
|
||||
that aren't connected to the main loop at all:
|
||||
|
||||
FF7FSF7F7F7F7F7F---7
|
||||
L|LJ||||||||||||F--J
|
||||
FL-7LJLJ||||||LJL-77
|
||||
F--JF--7||LJLJ7F7FJ-
|
||||
L---JF-JLJ.||-FJLJJ7
|
||||
|F|F-JF---7F7-L7L|7|
|
||||
|FFJF7L7F-JF7|JL---7
|
||||
7-L-JL7||F7|L7F-7F7|
|
||||
L.L7LFJ|||||FJL7||LJ
|
||||
L7JLJL-JLJLJL--JLJ.L
|
||||
|
||||
Here are just the tiles that are enclosed by the loop marked with I:
|
||||
|
||||
FF7FSF7F7F7F7F7F---7
|
||||
L|LJ||||||||||||F--J
|
||||
FL-7LJLJ||||||LJL-77
|
||||
F--JF--7||LJLJIF7FJ-
|
||||
L---JF-JLJIIIIFJLJJ7
|
||||
|F|F-JF---7IIIL7L|7|
|
||||
|FFJF7L7F-JF7IIL---7
|
||||
7-L-JL7||F7|L7F-7F7|
|
||||
L.L7LFJ|||||FJL7||LJ
|
||||
L7JLJL-JLJLJL--JLJ.L
|
||||
|
||||
In this last example, 10 tiles are enclosed by the loop.
|
||||
|
||||
Figure out whether you have time to search for the nest by calculating the
|
||||
area within the loop. How many tiles are enclosed by the loop?
|
||||
|
||||
Your puzzle answer was 297.
|
||||
|
||||
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.
|
||||
|
||||
You can also [Shareon [19]Twitter [20]Mastodon] this puzzle.
|
||||
|
||||
References
|
||||
|
||||
Visible links
|
||||
1. https://adventofcode.com/
|
||||
2. https://adventofcode.com/2023/about
|
||||
3. https://adventofcode.com/2023/events
|
||||
4. https://teespring.com/stores/advent-of-code
|
||||
5. https://adventofcode.com/2023/settings
|
||||
6. https://adventofcode.com/2023/auth/logout
|
||||
7. Advent of Code Supporter
|
||||
https://adventofcode.com/2023/support
|
||||
8. https://adventofcode.com/2023
|
||||
9. https://adventofcode.com/2023
|
||||
10. https://adventofcode.com/2023/support
|
||||
11. https://adventofcode.com/2023/sponsors
|
||||
12. https://adventofcode.com/2023/leaderboard
|
||||
13. https://adventofcode.com/2023/stats
|
||||
14. https://adventofcode.com/2023/sponsors
|
||||
15. https://kotlinlang.org/
|
||||
16. https://en.wikipedia.org/wiki/Hot_spring
|
||||
17. https://adventofcode.com/2023
|
||||
18. https://adventofcode.com/2023/day/10/input
|
||||
19. https://twitter.com/intent/tweet?text=I%27ve+completed+%22Pipe+Maze%22+%2D+Day+10+%2D+Advent+of+Code+2023&url=https%3A%2F%2Fadventofcode%2Ecom%2F2023%2Fday%2F10&related=ericwastl&hashtags=AdventOfCode
|
||||
20. javascript:void(0);
|
Reference in New Issue
Block a user