Advertisement
Guest User

Untitled

a guest
Dec 21st, 2024
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. from collections import defaultdict
  2.  
  3. P = 16777216 # Pruning modulo value
  4.  
  5. def sim(secret, n):
  6. secrets = []
  7. for _ in range(n):
  8. secret = (secret ^ (secret * 64)) % P
  9. secret = (secret ^ (secret // 32)) % P
  10. secret = (secret ^ (secret * 2048)) % P
  11. secrets.append(secret)
  12. return secrets
  13.  
  14. if __name__ == "__main__":
  15. with open("input.txt", "r") as f:
  16. data = list(map(int, f.read().splitlines()))
  17.  
  18. sequence_selling_prices = defaultdict(int)
  19. s = 0
  20.  
  21. for k in data:
  22. secrets = sim(k, 2000)
  23. s += secrets[-1]
  24.  
  25. prices = [secret % 10 for secret in secrets]
  26.  
  27. changes = [prices[i] - prices[i - 1] for i in range(1, len(prices))]
  28.  
  29. seen_sequences = set()
  30.  
  31. for i in range(len(changes) - 3):
  32. sequence = tuple(changes[i:i + 4])
  33. if sequence not in seen_sequences:
  34. selling_price = prices[i + 4]
  35. sequence_selling_prices[sequence] += selling_price
  36. seen_sequences.add(sequence)
  37.  
  38. optimal_sequence = max(sequence_selling_prices, key=lambda seq: sequence_selling_prices[seq])
  39. print(s)
  40. print(sequence_selling_prices[optimal_sequence])
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement