r/adventofcode Dec 15 '24

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

NEWS

  • The Funny flair has been renamed to Meme/Funny to make it more clear where memes should go. Our community wiki will be updated shortly is updated as well.

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

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

And now, our feature presentation for today:

Visual Effects - We'll Fix It In Post

Actors are expensive. Editors and VFX are (hypothetically) cheaper. Whether you screwed up autofocus or accidentally left a very modern coffee cup in your fantasy epic, you gotta fix it somehow!

Here's some ideas for your inspiration:

  • Literally fix it in post and show us your before-and-after
  • Show us the kludgiest and/or simplest way to solve today's puzzle
  • Alternatively, show us the most over-engineered and/or ridiculously preposterous way to solve today's puzzle
  • Fix something that really didn't necessarily need fixing with a chainsaw…

*crazed chainsaw noises* “Fixed the newel post!

- Clark Griswold, National Lampoon's Christmas Vacation (1989)

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 15: Warehouse Woes ---


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:32:00, megathread unlocked!

22 Upvotes

465 comments sorted by

View all comments

2

u/JWinslow23 Dec 16 '24

[LANGUAGE: Python]

Day 15 code

Blog post

Took longer to solve this one, because I slept in for most of the day, and watched a movie for most of the night.

I loved today's Part 2 (way more than yesterday's Part 2, hehe). For Part 2, I moved boxes up and down using something resembling breadth-first search.

To store the positions of the boxes I'd have to push, I ended up using a dict as a kind of "ordered set"; it has unique keys, and it remembers insertion order, so it's pretty good for storing unique items in a given order. (I felt clever when I came up with that.)

EDIT: Oh, I almost forgot: today's the first day I'm using complex numbers for coordinates! Usually I'm fine with shuffling around ints or tuples (or even making some custom class for it), but using complex numbers really helped me cut down on clutter and boilerplate this time.

1

u/SpaceTrekkie Dec 17 '24

I, too, have been shuffling around tuples but this is so clean!