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
|