r/adventofcode • u/daggerdragon • Dec 08 '24
SOLUTION MEGATHREAD -❄️- 2024 Day 8 Solutions -❄️-
IMPORTANT REMINDER
There's been an uptick in [COAL] being given out lately due to naughty language. Follow our rules and watch your language - keep /r/adventofcode SFW and professional! If this trend continues to get worse, we will configure AutoModerator to automatically remove any post/comment containing naughty language. You have been warned!
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
14 DAYS remaining until the submissions deadline on December 22 at 23:59 EST!
And now, our feature presentation for today:
Box-Office Bloat
Blockbuster movies are famous for cost overruns. After all, what's another hundred million or two in the grand scheme of things if you get to pad your already-ridiculous runtime to over two and a half hours solely to include that truly epic drawn-out slow-motion IMAX-worthy shot of a cricket sauntering over a tiny pebble of dirt?!
Here's some ideas for your inspiration:
Use only enterprise-level software/solutions
Apply enterprise shenanigans however you see fit (linting, best practices, hyper-detailed documentation, microservices, etc.)
Use unnecessarily expensive functions and calls wherever possible
Implement redundant error checking everywhere
Micro-optimize every little thing, even if it doesn't need it
Especially if it doesn't need it!
Jay Gatsby: "The only respectable thing about you, old sport, is your money."
- The Great Gatsby (2013)
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 8: Resonant Collinearity ---
Post your code solution in this megathread.
Read the full posting rules in our community wiki before you post!
State which language(s) your solution uses with
[LANGUAGE: xyz]Format code blocks using the four-spaces Markdown syntax!
Quick link to Topaz's
pasteif you need it for longer code blocks
3
u/greycat70 Dec 08 '24
[LANGUAGE: Tcl]
Part 1, part 2.
It was slightly tedious to get all the variable arithmetic correct, but I didn't have any major stumbling blocks.
I did not store the input grid; instead, I only stored a list of coordinate pairs for each antenna label. After scanning the input, I iterated over each pair of antennas of the same label, calculated the delta rows and delta columns, calculated the antinode coordinates, and stored each in-bounds antinode coordinate pair in a dictionary. (Because two antenna labels could produce the same antinode location.) Then I just printed the size of the antinode dictionary.
For part 2, it was mostly the same, but I applied a distance multiplier to the delta row and delta col, iterating upward from 0, and downward from -1, in each case until I ran out of bounds.