Advertisement
hhoppe

Advent of code 2024 day 22 concise

Dec 22nd, 2024
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.64 KB | None | 0 0
  1. def day22(s, *, part2=False):
  2.   total = 0
  3.   scores = collections.defaultdict(int)
  4.   secrets = np.empty(2001, int)
  5.  
  6.   for v in map(int, s.splitlines()):
  7.     for i in range(2001):
  8.       secrets[i] = v
  9.       v = ((v << 6) ^ v) & 0xFFFFFF
  10.       v = ((v >> 5) ^ v) & 0xFFFFFF
  11.       v = ((v << 11) ^ v) & 0xFFFFFF
  12.  
  13.     if not part2:
  14.       total += secrets[-1]
  15.       continue
  16.  
  17.     seen = set()
  18.     diffs = np.diff(secrets % 10)
  19.     for seq, bananas in zip(more_itertools.windowed(diffs, 4), secrets[4:]):
  20.       if seq not in seen:
  21.         seen.add(seq)
  22.         scores[seq] += bananas % 10
  23.  
  24.   return max(scores.values()) if part2 else total
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement