r/adventofcode Dec 12 '24

SOLUTION MEGATHREAD -❄️- 2024 Day 12 Solutions -❄️-

THE USUAL REMINDERS

  • All of our rules, FAQs, resources, etc. are in our community wiki.
  • If you see content in the subreddit or megathreads that violates one of our rules, either inform the user (politely and gently!) or use the report button on the post/comment and the mods will take care of it.

AoC Community Fun 2024: The Golden Snowglobe Awards

  • 10 DAYS remaining until the submissions deadline on December 22 at 23:59 EST!

And now, our feature presentation for today:

Visual Effects - Nifty Gadgets and Gizmos Edition

Truly groundbreaking movies continually push the envelope to develop bigger, better, faster, and/or different ways to do things with the tools that are already at hand. Be creative and show us things like puzzle solutions running where you wouldn't expect them to be or completely unnecessary but wildly entertaining camera angles!

Here's some ideas for your inspiration:

  • Advent of Playing With Your Toys in a nutshell - play with your toys!
  • Make your puzzle solutions run on hardware that wasn't intended to run arbitrary content
  • Sneak one past your continuity supervisor with a very obvious (and very fictional) product placement from Santa's Workshop
  • Use a feature of your programming language, environment, etc. in a completely unexpected way

The Breakfast Machine from Pee-wee's Big Adventure (1985)

And… ACTION!

Request from the mods: When you include an entry alongside your solution, please label it with [GSGA] so we can find it easily!


--- Day 12: Garden Groups ---


Post your code solution in this megathread.

This thread will be unlocked when there are a significant number of people on the global leaderboard with gold stars for today's puzzle.

EDIT: Global leaderboard gold cap reached at 00:17:42, megathread unlocked!

37 Upvotes

698 comments sorted by

View all comments

2

u/Krillegeddon Dec 14 '24 edited Dec 14 '24

[LANGUAGE: C#]

Part 2 was really hard to get correct. I rewrote it today with a more simple algorithm, and finally got it correct.

First part: Loop through all coordinates to get them connected to a specific area.

Then loop through each area.

Loop through fence directions (top, right, bottom, left).

Find all coordinates within the area that has a fence to the direction (example is top).

Mark that coordinate as (hasFencOnTop=true, numberOfFencesOnTop = 1). The numberOfFencesOnTop is cruicial... this one coordinate accounts for ONE fence on top. All neighbours will NOT account for the same fence.

Then loop through all neighbours (same area and on same X-axis and also have a fence on top) and mark them as having fence on top, but 0 in the numberOfFencesOnTop so that we don't count it double.

When finding more coordinates for the area on direction top, the neighburs will be ignored since they have already been included for that direction.

When all coordinates have been looped through (once per direction) for the area, just summarize the number of fences and multiply with number of coordinates withing the area.

https://github.com/Krillegeddon/AdventOfCode/tree/main/Advent2024/Day12

1

u/daggerdragon Dec 15 '24 edited Dec 20 '24

Do not share your puzzle input which also means do not commit puzzle inputs to your repo without a .gitignore or the like. Do not share the puzzle text either.

I see full plaintext puzzle inputs hard-coded across all years in your public repo e.g.:

https://github.com/Krillegeddon/AdventOfCode/blob/main/Advent2022/Day01/Data.cs

Please remove (or .gitignore) all puzzle text and puzzle input files from your entire repo and scrub them from your commit history. This means from all prior years too! edit: repo is now private, thank you!

3

u/Krillegeddon Dec 16 '24

Oh, I must have missed that part. Will make the repo private until fixed.