Advertisement
Guest User

Untitled

a guest
Dec 21st, 2024
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | Source Code | 0 0
  1. from collections import deque
  2. from functools import cache
  3. import json
  4.  
  5.  
  6. path = "day_22.txt"
  7. # path = "test.txt"
  8.  
  9. with open(path) as f:
  10.     buyers = [int(l.strip()) for l in f.readlines()]
  11.    
  12. def mix(secret, n):
  13.     return secret ^ n
  14.  
  15. def prune(secret):
  16.     return secret%16777216
  17.  
  18. def randomize(number):
  19.     secret = number
  20.    
  21.     step_1 = secret * 64
  22.     secret = prune(mix(secret, step_1))
  23.    
  24.     step_2 = secret//32
  25.     secret = prune(mix(secret, step_2))
  26.    
  27.     step_3 = secret * 2048
  28.     secret = prune(mix(secret, step_3))
  29.    
  30.     return secret
  31.  
  32. prices = {}
  33. variations = {}
  34. p1 = []
  35. sequences = {}
  36. for i,b in enumerate(buyers):
  37.     secret = b
  38.     prices[i] = [secret%10]
  39.     variations[i] = [secret%10]
  40.     seen = set()
  41.     for j in range(2000):
  42.         secret = randomize(secret)
  43.         prices[i].append(secret%10)
  44.         variations[i].append(prices[i][-1] - prices[i][-2])
  45.         v = variations[i]
  46.         if j >= 4:
  47.             sequence = str((v[-4], v[-3], v[-2], v[-1]))
  48.             if sequence not in seen:
  49.                 sequences[sequence] = sequences.get(sequence, 0) + prices[i][-1]
  50.             seen.add(sequence)
  51.        
  52.    
  53.     p1.append(secret)  
  54.  
  55. sequence = max(sequences, key=sequences.get)
  56. print(f'p2: {sequence} - {sequences[sequence]}')
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement