229 lines
7.9 KiB
Plaintext
229 lines
7.9 KiB
Plaintext
|
Advent of Code
|
|||
|
|
|||
|
--- Day 12: Garden Groups ---
|
|||
|
|
|||
|
Why not search for the Chief Historian near the [16]gardener and his
|
|||
|
[17]massive farm? There's plenty of food, so The Historians grab something
|
|||
|
to eat while they search.
|
|||
|
|
|||
|
You're about to settle near a complex arrangement of garden plots when
|
|||
|
some Elves ask if you can lend a hand. They'd like to set up fences around
|
|||
|
each region of garden plots, but they can't figure out how much fence they
|
|||
|
need to order or how much it will cost. They hand you a map (your puzzle
|
|||
|
input) of the garden plots.
|
|||
|
|
|||
|
Each garden plot grows only a single type of plant and is indicated by a
|
|||
|
single letter on your map. When multiple garden plots are growing the same
|
|||
|
type of plant and are touching (horizontally or vertically), they form a
|
|||
|
region. For example:
|
|||
|
|
|||
|
AAAA
|
|||
|
BBCD
|
|||
|
BBCC
|
|||
|
EEEC
|
|||
|
|
|||
|
This 4x4 arrangement includes garden plots growing five different types of
|
|||
|
plants (labeled A, B, C, D, and E), each grouped into their own region.
|
|||
|
|
|||
|
In order to accurately calculate the cost of the fence around a single
|
|||
|
region, you need to know that region's area and perimeter.
|
|||
|
|
|||
|
The area of a region is simply the number of garden plots the region
|
|||
|
contains. The above map's type A, B, and C plants are each in a region of
|
|||
|
area 4. The type E plants are in a region of area 3; the type D plants are
|
|||
|
in a region of area 1.
|
|||
|
|
|||
|
Each garden plot is a square and so has four sides. The perimeter of a
|
|||
|
region is the number of sides of garden plots in the region that do not
|
|||
|
touch another garden plot in the same region. The type A and C plants are
|
|||
|
each in a region with perimeter 10. The type B and E plants are each in a
|
|||
|
region with perimeter 8. The lone D plot forms its own region with
|
|||
|
perimeter 4.
|
|||
|
|
|||
|
Visually indicating the sides of plots in each region that contribute to
|
|||
|
the perimeter using - and |, the above map's regions' perimeters are
|
|||
|
measured as follows:
|
|||
|
|
|||
|
+-+-+-+-+
|
|||
|
|A A A A|
|
|||
|
+-+-+-+-+ +-+
|
|||
|
|D|
|
|||
|
+-+-+ +-+ +-+
|
|||
|
|B B| |C|
|
|||
|
+ + + +-+
|
|||
|
|B B| |C C|
|
|||
|
+-+-+ +-+ +
|
|||
|
|C|
|
|||
|
+-+-+-+ +-+
|
|||
|
|E E E|
|
|||
|
+-+-+-+
|
|||
|
|
|||
|
Plants of the same type can appear in multiple separate regions, and
|
|||
|
regions can even appear within other regions. For example:
|
|||
|
|
|||
|
OOOOO
|
|||
|
OXOXO
|
|||
|
OOOOO
|
|||
|
OXOXO
|
|||
|
OOOOO
|
|||
|
|
|||
|
The above map contains five regions, one containing all of the O garden
|
|||
|
plots, and the other four each containing a single X plot.
|
|||
|
|
|||
|
The four X regions each have area 1 and perimeter 4. The region containing
|
|||
|
21 type O plants is more complicated; in addition to its outer edge
|
|||
|
contributing a perimeter of 20, its boundary with each X region
|
|||
|
contributes an additional 4 to its perimeter, for a total perimeter of 36.
|
|||
|
|
|||
|
Due to "modern" business practices, the price of fence required for a
|
|||
|
region is found by multiplying that region's area by its perimeter. The
|
|||
|
total price of fencing all regions on a map is found by adding together
|
|||
|
the price of fence for every region on the map.
|
|||
|
|
|||
|
In the first example, region A has price 4 * 10 = 40, region B has price 4
|
|||
|
* 8 = 32, region C has price 4 * 10 = 40, region D has price 1 * 4 = 4,
|
|||
|
and region E has price 3 * 8 = 24. So, the total price for the first
|
|||
|
example is 140.
|
|||
|
|
|||
|
In the second example, the region with all of the O plants has price 21 *
|
|||
|
36 = 756, and each of the four smaller X regions has price 1 * 4 = 4, for
|
|||
|
a total price of 772 (756 + 4 + 4 + 4 + 4).
|
|||
|
|
|||
|
Here's a larger example:
|
|||
|
|
|||
|
RRRRIICCFF
|
|||
|
RRRRIICCCF
|
|||
|
VVRRRCCFFF
|
|||
|
VVRCCCJFFF
|
|||
|
VVVVCJJCFE
|
|||
|
VVIVCCJJEE
|
|||
|
VVIIICJJEE
|
|||
|
MIIIIIJJEE
|
|||
|
MIIISIJEEE
|
|||
|
MMMISSJEEE
|
|||
|
|
|||
|
It contains:
|
|||
|
|
|||
|
• A region of R plants with price 12 * 18 = 216.
|
|||
|
• A region of I plants with price 4 * 8 = 32.
|
|||
|
• A region of C plants with price 14 * 28 = 392.
|
|||
|
• A region of F plants with price 10 * 18 = 180.
|
|||
|
• A region of V plants with price 13 * 20 = 260.
|
|||
|
• A region of J plants with price 11 * 20 = 220.
|
|||
|
• A region of C plants with price 1 * 4 = 4.
|
|||
|
• A region of E plants with price 13 * 18 = 234.
|
|||
|
• A region of I plants with price 14 * 22 = 308.
|
|||
|
• A region of M plants with price 5 * 12 = 60.
|
|||
|
• A region of S plants with price 3 * 8 = 24.
|
|||
|
|
|||
|
So, it has a total price of 1930.
|
|||
|
|
|||
|
What is the total price of fencing all regions on your map?
|
|||
|
|
|||
|
Your puzzle answer was 1522850.
|
|||
|
|
|||
|
--- Part Two ---
|
|||
|
|
|||
|
Fortunately, the Elves are trying to order so much fence that they qualify
|
|||
|
for a bulk discount!
|
|||
|
|
|||
|
Under the bulk discount, instead of using the perimeter to calculate the
|
|||
|
price, you need to use the number of sides each region has. Each straight
|
|||
|
section of fence counts as a side, regardless of how long it is.
|
|||
|
|
|||
|
Consider this example again:
|
|||
|
|
|||
|
AAAA
|
|||
|
BBCD
|
|||
|
BBCC
|
|||
|
EEEC
|
|||
|
|
|||
|
The region containing type A plants has 4 sides, as does each of the
|
|||
|
regions containing plants of type B, D, and E. However, the more complex
|
|||
|
region containing the plants of type C has 8 sides!
|
|||
|
|
|||
|
Using the new method of calculating the per-region price by multiplying
|
|||
|
the region's area by its number of sides, regions A through E have prices
|
|||
|
16, 16, 32, 4, and 12, respectively, for a total price of 80.
|
|||
|
|
|||
|
The second example above (full of type X and O plants) would have a total
|
|||
|
price of 436.
|
|||
|
|
|||
|
Here's a map that includes an E-shaped region full of type E plants:
|
|||
|
|
|||
|
EEEEE
|
|||
|
EXXXX
|
|||
|
EEEEE
|
|||
|
EXXXX
|
|||
|
EEEEE
|
|||
|
|
|||
|
The E-shaped region has an area of 17 and 12 sides for a price of 204.
|
|||
|
Including the two regions full of type X plants, this map has a total
|
|||
|
price of 236.
|
|||
|
|
|||
|
This map has a total price of 368:
|
|||
|
|
|||
|
AAAAAA
|
|||
|
AAABBA
|
|||
|
AAABBA
|
|||
|
ABBAAA
|
|||
|
ABBAAA
|
|||
|
AAAAAA
|
|||
|
|
|||
|
It includes two regions full of type B plants (each with 4 sides) and a
|
|||
|
single region full of type A plants (with 4 sides on the outside and 8
|
|||
|
more sides on the inside, a total of 12 sides). Be especially careful when
|
|||
|
counting the fence around regions like the one full of type A plants; in
|
|||
|
particular, each section of fence has an in-side and an out-side, so the
|
|||
|
fence does not connect across the middle of the region (where the two B
|
|||
|
regions touch diagonally). (The Elves would have used the Möbius Fencing
|
|||
|
Company instead, but their contract terms were too one-sided.)
|
|||
|
|
|||
|
The larger example from before now has the following updated prices:
|
|||
|
|
|||
|
• A region of R plants with price 12 * 10 = 120.
|
|||
|
• A region of I plants with price 4 * 4 = 16.
|
|||
|
• A region of C plants with price 14 * 22 = 308.
|
|||
|
• A region of F plants with price 10 * 12 = 120.
|
|||
|
• A region of V plants with price 13 * 10 = 130.
|
|||
|
• A region of J plants with price 11 * 12 = 132.
|
|||
|
• A region of C plants with price 1 * 4 = 4.
|
|||
|
• A region of E plants with price 13 * 8 = 104.
|
|||
|
• A region of I plants with price 14 * 16 = 224.
|
|||
|
• A region of M plants with price 5 * 6 = 30.
|
|||
|
• A region of S plants with price 3 * 6 = 18.
|
|||
|
|
|||
|
Adding these together produces its new total price of 1206.
|
|||
|
|
|||
|
What is the new total price of fencing all regions on your map?
|
|||
|
|
|||
|
Your puzzle answer was 953738.
|
|||
|
|
|||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|||
|
|
|||
|
At this point, you should [18]return to your Advent calendar and try
|
|||
|
another puzzle.
|
|||
|
|
|||
|
If you still want to see it, you can [19]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/2023/day/5
|
|||
|
17. https://adventofcode.com/2023/day/21
|
|||
|
18. https://adventofcode.com/2024
|
|||
|
19. https://adventofcode.com/2024/day/12/input
|