Guest User

Untitled

a guest
Dec 11th, 2024
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. # Input: list of numbers
  2. # Output: each step, each number changes simultaneously:
  3. #           if 0, then replaced by 1
  4. #           else if even number of digits, then split (e.g. 1000 -> 10 0)
  5. #           else multiplied by 2024
  6. #         how many numbers after 75 steps?
  7.  
  8. from functools import cache
  9.  
  10. @cache
  11. def result(number):
  12.   if number == 0:
  13.     return [1]
  14.   word = str(number)
  15.   if len(word) % 2 == 0:
  16.     half_length = int(len(word) / 2)
  17.     return [int(word[:half_length]), int(word[half_length:])]
  18.   return [number * 2024]
  19.  
  20. @cache
  21. def expanded_length(number, steps_left):
  22.   if steps_left == 0:
  23.     return 1
  24.   el_total = 0
  25.   for new_number in result(number):
  26.     el_total += expanded_length(new_number, steps_left - 1)
  27.   return el_total
  28.  
  29. all_numbers = []
  30.  
  31. file = open("11_input.txt", "r")
  32. for line in file:
  33.   line = line.replace("\n", "")
  34.   for word in line.split(" "):
  35.     all_numbers.append(int(word))
  36.  
  37. total = 0
  38. for number in all_numbers:
  39.   total += expanded_length(number, 75)
  40. print (total)
Add Comment
Please, Sign In to add comment