Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Input: list of numbers
- # Output: each step, each number changes simultaneously:
- # if 0, then replaced by 1
- # else if even number of digits, then split (e.g. 1000 -> 10 0)
- # else multiplied by 2024
- # how many numbers after 75 steps?
- from functools import cache
- @cache
- def result(number):
- if number == 0:
- return [1]
- word = str(number)
- if len(word) % 2 == 0:
- half_length = int(len(word) / 2)
- return [int(word[:half_length]), int(word[half_length:])]
- return [number * 2024]
- @cache
- def expanded_length(number, steps_left):
- if steps_left == 0:
- return 1
- el_total = 0
- for new_number in result(number):
- el_total += expanded_length(new_number, steps_left - 1)
- return el_total
- all_numbers = []
- file = open("11_input.txt", "r")
- for line in file:
- line = line.replace("\n", "")
- for word in line.split(" "):
- all_numbers.append(int(word))
- total = 0
- for number in all_numbers:
- total += expanded_length(number, 75)
- print (total)
Add Comment
Please, Sign In to add comment