Day 12: Garden Groups
Megathread guidelines
- Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
- You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL
FAQ
- What is this?: Here is a post with a large amount of details: https://programming.dev/post/6637268
- Where do I participate?: https://adventofcode.com/
- Is there a leaderboard for the community?: We have a programming.dev leaderboard with the info on how to join in this post: https://programming.dev/post/6631465
I saw it :)
If I understand your approach for pt2, you are getting all the fences and then grouping the connected ones? That definitely seems like a harder approach. I went with the counting corner method, which was also hard, but less iterating required.
Keep the solutions coming, even as the sub wanes in activity, I still appreciate them :)
hey thanks!
I didn’t check any other solutions before finishing (currently wondering way day 13 is too low), but I thought that trying to traverse fences would be a pain and since I have everything separated by regions and not traversing the array, counting corners never came to mind.
But the thought that I had was that for each region, all points will be a straight line in the V or H orientations, so if I can go up and down and count when
last != next - 1
, then that’ll tell me that that is a contiguous piece of fence.The idea isn’t too hard, for tracking the XAxis it’s
region.GroupBy(YAxis) // row .Select(group => group.Sort(g => g.XAxis) // column .Window(a,b => a != b - 1 ? 1 : 0).Sum() .Sum()
Except that I used a different splitting method and that came to me later.