Guest User

Untitled

a guest
Dec 21st, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. # Input: list of numbers (initial secret number of each buyer)
  2. # Output: given a sequence of four differences (-9 to +9),
  3. #           each number is transformed until its ones digit goes through
  4. #           those differences, then stops
  5. #         which sequence maximizes sum of final ones digits?
  6. #         if sequence not found within 2000 steps, then it doesn't contribute
  7.  
  8. from functools import cache
  9. import math
  10.  
  11. @cache
  12. def next_number(number):
  13.   number = (number ^ (number * 64)) % 16777216
  14.   number = (number ^ math.floor(number / 32)) % 16777216
  15.   number = (number ^ (number * 2048)) % 16777216
  16.   return number
  17.  
  18. def sequence_key(sequence):
  19.   return str(sequence[0]) + "," + str(sequence[1]) + "," + str(sequence[2]) + "," + str(sequence[3])
  20.  
  21. initial_numbers = []
  22. file = open("22_input.txt", "r")
  23. for line in file:
  24.   line = line.replace("\n", "")
  25.   initial_numbers.append(int(line))
  26.  
  27. sequence_values = {}
  28. for number in initial_numbers:
  29.   sequences = []
  30.   differences = []
  31.   for iteration in range(2000):
  32.     new_number = next_number(number)
  33.     difference = (new_number % 10) - (number % 10)
  34.     if len(differences) == 4:
  35.       differences = differences[1:]
  36.     differences.append(difference)
  37.     number = new_number
  38.     if len(differences) == 4 and not (differences in sequences):
  39.       sk = sequence_key(differences)
  40.       if not (sk in sequence_values):
  41.         sequence_values[sk] = 0
  42.       sequence_values[sk] += (number % 10)
  43.       sequences.append(differences)
  44.  
  45. max_bananas = 0
  46. for sk in sequence_values:
  47.   if max_bananas < sequence_values[sk]:
  48.     max_bananas = sequence_values[sk]
  49. print (max_bananas)
Add Comment
Please, Sign In to add comment