Advertisement
hhoppe

Advent of code 2024 day 9 part 2 fast (18 ms)

Dec 9th, 2024
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.60 KB | None | 0 0
  1. def day9_part2(s):
  2.   values = list(map(int, s.strip() + '0'))
  3.   nums, skips = values[::2], values[1::2]
  4.   positions = np.cumsum([0, 0] + values)[1::2]
  5.   empty_index = [0] * 10  # First possible empty space of each size.
  6.  
  7.   checksum = 0
  8.   for i1 in reversed(range(len(nums))):
  9.     n = nums[i1]
  10.     position = positions[i1]
  11.     for i0 in range(empty_index[n], i1):
  12.       if skips[i0] >= n:
  13.         position = positions[i0 + 1] - skips[i0]
  14.         skips[i0] -= n
  15.         break
  16.     empty_index[n] = i0
  17.     for _ in range(n):
  18.       checksum += position * i1
  19.       position += 1
  20.  
  21.   return checksum
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement