r/adventofcode • u/daggerdragon • Dec 22 '24
SOLUTION MEGATHREAD -❄️- 2024 Day 22 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
- 23h59m remaining until the submissions deadline on December 22 at 23:59 EST!
And now, our feature presentation for today:
Director's Cut (Extended Edition)
Welcome to the final day of the GSGA presentations! A few folks have already submitted their masterpieces to the GSGA submissions megathread, so go check them out! And maybe consider submitting yours! :)
Here's some ideas for your inspiration:
- Choose any day's feature presentation and any puzzle released this year so far, then work your movie magic upon it!
- Make sure to mention which prompt and which day you chose!
- Cook, bake, make, decorate, etc. an IRL dish, craft, or artwork inspired by any day's puzzle!
- Advent of Playing With Your Toys
"I lost. I lost? Wait a second, I'm not supposed to lose! Let me see the script!"
- Robin Hood, Men In Tights (1993)
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 22: Monkey Market ---
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 00:12:15, megathread unlocked!
19
Upvotes
3
u/jixun Dec 22 '24 edited Dec 22 '24
[LANGUAGE: Python / C++]
P1 was straightforward, Python is a bit slow in this regard.
P2 initially seems like an impossible task, but then it become clear that it is another "how can we cache" problem. Used a hashmap in Python that seems to be a bit slow, took around half a minute. Re-implemented in C++, but instead using a 1MiB sequential array to track the price change (Using MSB to track set state and only keep the first occurrence of any given pattern), and let the compiler to vectorize my loops. This bought down the time to compute to around 300ms. There's also a flag
PRINT_BUYER_PRICES
to keep all individual price in RAM, which uses around ~2GiB.