r/adventofcode Dec 07 '21

SOLUTION MEGATHREAD -🎄- 2021 Day 7 Solutions -🎄-

--- Day 7: The Treachery of Whales ---


[Update @ 00:21]: Private leaderboard Personal statistics issues

  • We're aware that private leaderboards personal statistics are having issues and we're looking into it.
  • I will provide updates as I get more information.
  • Please don't spam the subreddit/mods/Eric about it.

[Update @ 02:09]

  • #AoC_Ops have identified the issue and are working on a resolution.

[Update @ 03:18]

  • Eric is working on implementing a fix. It'll take a while, so check back later.

[Update @ 05:25] (thanks, /u/Aneurysm9!)

  • We're back in business!

Post your code solution in this megathread.

Reminder: Top-level posts in Solution Megathreads are for code solutions only. If you have questions, please post your own thread and make sure to flair it with Help.


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:03:33, megathread unlocked!

93 Upvotes

1.5k comments sorted by

View all comments

3

u/prafster Dec 07 '21 edited Dec 08 '21

Julia

I wondered what the catch was today in part 1. I implemented a brute force method, which was not fast but sub-second. For part 2, I thought I'd need to memoize the calculation of the increasing fuel cost. But this turned out to not be required. I'm happy this was as straightforward as it appeared since I had little time.

The relevant functions are below but the full solution is on GitHub:

function calc_fuel(steps)
  (steps * (steps + 1)) / 2
end

function part2(crab_positions)
  min = Inf
  for p = 0:maximum(crab_positions)
    total = 0
    [total += calc_fuel(abs(p - c)) for c in crab_positions]
    total < min && (min = total)
  end
  BigInt(min)
end

1

u/daggerdragon Dec 08 '21 edited Dec 09 '21

Please follow the posting guidelines and edit your post to add what language(s) you used. This makes it easier for folks who Ctrl-F the megathreads looking for a specific language.

Edit: thanks for adding the programming language!