204 lines
7.0 KiB
Plaintext
204 lines
7.0 KiB
Plaintext
[1]Advent of Code
|
||
|
||
• [2][About]
|
||
• [3][Events]
|
||
• [4][Shop]
|
||
• [5][Settings]
|
||
• [6][Log Out]
|
||
|
||
br0xen [7](AoC++) 32*
|
||
|
||
λy.[8]2023
|
||
|
||
• [9][Calendar]
|
||
• [10][AoC++]
|
||
• [11][Sponsors]
|
||
• [12][Leaderboard]
|
||
• [13][Stats]
|
||
|
||
Our [14]sponsors help make Advent of Code possible:
|
||
[15]JPMorgan Chase - With over 57,000 technologists globally and an annual
|
||
tech spend of $15 billion, JPMorgan Chase is dedicated to improving the
|
||
design, analytics, coding and testing that goes into creating high quality
|
||
software products.
|
||
|
||
--- Day 16: The Floor Will Be Lava ---
|
||
|
||
With the beam of light completely focused somewhere, the reindeer leads
|
||
you deeper still into the Lava Production Facility. At some point, you
|
||
realize that the steel facility walls have been replaced with cave, and
|
||
the doorways are just cave, and the floor is cave, and you're pretty sure
|
||
this is actually just a giant cave.
|
||
|
||
Finally, as you approach what must be the heart of the mountain, you see a
|
||
bright light in a cavern up ahead. There, you discover that the beam of
|
||
light you so carefully focused is emerging from the cavern wall closest to
|
||
the facility and pouring all of its energy into a contraption on the
|
||
opposite side.
|
||
|
||
Upon closer inspection, the contraption appears to be a flat,
|
||
two-dimensional square grid containing empty space (.), mirrors (/ and \),
|
||
and splitters (| and -).
|
||
|
||
The contraption is aligned so that most of the beam bounces around the
|
||
grid, but each tile on the grid converts some of the beam's light into
|
||
heat to melt the rock in the cavern.
|
||
|
||
You note the layout of the contraption (your puzzle input). For example:
|
||
|
||
.|...\....
|
||
|.-.\.....
|
||
.....|-...
|
||
........|.
|
||
..........
|
||
.........\
|
||
..../.\\..
|
||
.-.-/..|..
|
||
.|....-|.\
|
||
..//.|....
|
||
|
||
The beam enters in the top-left corner from the left and heading to the
|
||
right. Then, its behavior depends on what it encounters as it moves:
|
||
|
||
• If the beam encounters empty space (.), it continues in the same
|
||
direction.
|
||
• If the beam encounters a mirror (/ or \), the beam is reflected 90
|
||
degrees depending on the angle of the mirror. For instance, a
|
||
rightward-moving beam that encounters a / mirror would continue upward
|
||
in the mirror's column, while a rightward-moving beam that encounters
|
||
a \ mirror would continue downward from the mirror's column.
|
||
• If the beam encounters the pointy end of a splitter (| or -), the beam
|
||
passes through the splitter as if the splitter were empty space. For
|
||
instance, a rightward-moving beam that encounters a - splitter would
|
||
continue in the same direction.
|
||
• If the beam encounters the flat side of a splitter (| or -), the beam
|
||
is split into two beams going in each of the two directions the
|
||
splitter's pointy ends are pointing. For instance, a rightward-moving
|
||
beam that encounters a | splitter would split into two beams: one that
|
||
continues upward from the splitter's column and one that continues
|
||
downward from the splitter's column.
|
||
|
||
Beams do not interact with other beams; a tile can have many beams passing
|
||
through it at the same time. A tile is energized if that tile has at least
|
||
one beam pass through it, reflect in it, or split in it.
|
||
|
||
In the above example, here is how the beam of light bounces around the
|
||
contraption:
|
||
|
||
>|<<<\....
|
||
|v-.\^....
|
||
.v...|->>>
|
||
.v...v^.|.
|
||
.v...v^...
|
||
.v...v^..\
|
||
.v../2\\..
|
||
<->-/vv|..
|
||
.|<<<2-|.\
|
||
.v//.|.v..
|
||
|
||
Beams are only shown on empty tiles; arrows indicate the direction of the
|
||
beams. If a tile contains beams moving in multiple directions, the number
|
||
of distinct directions is shown instead. Here is the same diagram but
|
||
instead only showing whether a tile is energized (#) or not (.):
|
||
|
||
######....
|
||
.#...#....
|
||
.#...#####
|
||
.#...##...
|
||
.#...##...
|
||
.#...##...
|
||
.#..####..
|
||
########..
|
||
.#######..
|
||
.#...#.#..
|
||
|
||
Ultimately, in this example, 46 tiles become energized.
|
||
|
||
The light isn't energizing enough tiles to produce lava; to debug the
|
||
contraption, you need to start by analyzing the current situation. With
|
||
the beam starting in the top-left heading right, how many tiles end up
|
||
being energized?
|
||
|
||
Your puzzle answer was 6816.
|
||
|
||
--- Part Two ---
|
||
|
||
As you try to work out what might be wrong, the reindeer tugs on your
|
||
shirt and leads you to a nearby control panel. There, a collection of
|
||
buttons lets you align the contraption so that the beam enters from any
|
||
edge tile and heading away from that edge. (You can choose either of two
|
||
directions for the beam if it starts on a corner; for instance, if the
|
||
beam starts in the bottom-right corner, it can start heading either left
|
||
or upward.)
|
||
|
||
So, the beam could start on any tile in the top row (heading downward),
|
||
any tile in the bottom row (heading upward), any tile in the leftmost
|
||
column (heading right), or any tile in the rightmost column (heading
|
||
left). To produce lava, you need to find the configuration that energizes
|
||
as many tiles as possible.
|
||
|
||
In the above example, this can be achieved by starting the beam in the
|
||
fourth tile from the left in the top row:
|
||
|
||
.|<2<\....
|
||
|v-v\^....
|
||
.v.v.|->>>
|
||
.v.v.v^.|.
|
||
.v.v.v^...
|
||
.v.v.v^..\
|
||
.v.v/2\\..
|
||
<-2-/vv|..
|
||
.|<<<2-|.\
|
||
.v//.|.v..
|
||
|
||
Using this configuration, 51 tiles are energized:
|
||
|
||
.#####....
|
||
.#.#.#....
|
||
.#.#.#####
|
||
.#.#.##...
|
||
.#.#.##...
|
||
.#.#.##...
|
||
.#.#####..
|
||
########..
|
||
.#######..
|
||
.#...#.#..
|
||
|
||
Find the initial beam configuration that energizes the largest number of
|
||
tiles; how many tiles are energized in that configuration?
|
||
|
||
Your puzzle answer was 8163.
|
||
|
||
Both parts of this puzzle are complete! They provide two gold stars: **
|
||
|
||
At this point, you should [16]return to your Advent calendar and try
|
||
another puzzle.
|
||
|
||
If you still want to see it, you can [17]get your puzzle input.
|
||
|
||
You can also [Shareon [18]Twitter [19]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://www.jpmorgan.com/
|
||
16. https://adventofcode.com/2023
|
||
17. https://adventofcode.com/2023/day/16/input
|
||
18. https://twitter.com/intent/tweet?text=I%27ve+completed+%22The+Floor+Will+Be+Lava%22+%2D+Day+16+%2D+Advent+of+Code+2023&url=https%3A%2F%2Fadventofcode%2Ecom%2F2023%2Fday%2F16&related=ericwastl&hashtags=AdventOfCode
|
||
19. javascript:void(0);
|