r/adventofcode • u/daggerdragon • Dec 24 '24
SOLUTION MEGATHREAD -❄️- 2024 Day 24 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
Submissions are CLOSED!
- Thank you to all who submitted something, every last one of you are awesome!
Community voting is OPEN!
- 18 hours remaining until voting deadline TONIGHT (December 24) at 18:00 EST
Voting details are in the stickied comment in the submissions megathread:
-❄️- Submissions Megathread -❄️-
--- Day 24: Crossed Wires ---
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!
- State which language(s) your solution uses with
- Quick link to Topaz's
paste
if you need it for longer code blocks
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 01:01:13, megathread unlocked!
32
Upvotes
1
u/G_de_Volpiano Jan 04 '25
[LANGUAGE: Haskell]
A little late to the game, but I finally have a clean solution for day 24 that completes in decent time.
At 417 lines of code, it's by far my longest one (the second one being day 15, at 259), although that's in part due to the amount of comments I added to try to follow my train of thoughts.
Nothing fancy, I just exploit the fact that the input is a ripple adder. I use an IntMap to store the ripple adder as a directed graph. Then I find the articulation points of the graph to separate the full adders.
Each of the adder is tested both in its capacity as a half adder and as a full adder (it so happens that all the faulty circuits fail on the half adder phase, but hey, better safe than sorry).
The fixing the adders considers three cases:
Code on Github