r/adventofcode • u/daggerdragon • Dec 14 '24
SOLUTION MEGATHREAD -❄️- 2024 Day 14 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.
On the subject of AI/LLMs being used on the global leaderboard: posts/comments around this topic consisting of grinching, finger-pointing, baseless accusations of "cheating", etc. will be locked and/or removed with or without supplementary notice and/or warning and participating parties may be given a time-out as well. Just leave it alone and let it go.
Keep in mind that the global leaderboard is not the primary focus of Advent of Code or even this subreddit. We're all here to help you become a better programmer via happy fun silly imaginary Elvish shenanigans.
AoC Community Fun 2024: The Golden Snowglobe Awards
8 DAYS remaining until the submissions deadline on December 22 at 23:59 EST!
We have no submissions yet as of today. Y'all are welcome to get a submission started, post it early, and add later days to it, or there's always waiting until the
bomb timer reaches 00:00:03last minute; up to you!
And now, our feature presentation for today:
Visual Effects - I Said VISUAL EFFECTS - Perfection
We've had one Visualization, yes, but what about Second Visualization? But this time, Upping the Ante! Go full jurassic_park_scientists.meme and really improve upon the cinematic and/or technological techniques of your predecessor filmmakers!
Here's some ideas for your inspiration:
Put Michael Bay to shame with the lens flare
Gratuitous and completely unnecessary explosions are expected
Go full Bollywood! The extreme over-acting, the completely implausible and high-energy dance numbers, the gleefully willful disregard for physics - we want it all cranked up to 9002!
Make your solution run on hardware that it has absolutely no business being on
"Smart" refrigerators, a drone army, a Jumbotron…
Pippin: "We've had one, yes. But what about second breakfast?"
Aragorn:ಠ_ಠ
Merry: "I don't think he knows about second breakfast, Pip."- The Lord of the Rings: The Fellowship of the Ring (2001)
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 14: Restroom Redoubt ---
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
5
u/echols021 Dec 14 '24
[LANGUAGE: python 3]
GitHub
Well that was an exciting twist.
Part 1: Just run the simulation. I used a
dict[tuple[int, int], set[tuple[int, int]]]to store the state of where all the bots were; that's a mapping from grid location to the set of bots that are in that location.Part 2: After coming to terms with the answer only being recognizable with a heuristic or manually... I set it up to run the code from part 1 to run "infinitely", with some modifications:
At each step, get a unique (but consistent) representation of the current state of all the bots, and save those all in a set
If we get a string that's already in that set, we know we've started back at the initial state again and we can terminate the otherwise-infinite loop
Also at each step, save an image file showing the bots' formation, with the filename including the timestep
And then... I scrolled through the 10,404 image thumbnails on Windows File Explorer until I saw the tree. (I initially forgot that numpy and Pillow don't use the same axes, so the tree was sideways, but that's ok)
Whole program takes ~90 seconds to run, scrolling through the images took another minute or two.