Spaces:
Running
Running
File size: 1,001 Bytes
a4da721 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
def read_input(filename):
with open(filename, 'r') as f:
return [int(x) for x in f.read().strip().split()]
def has_even_digits(n):
return len(str(n)) % 2 == 0
def split_number(n):
s = str(n)
mid = len(s) // 2
left = int(s[:mid])
right = int(s[mid:])
return [left, right]
def transform_stones(stones):
new_stones = []
for stone in stones:
if stone == 0:
new_stones.append(1)
elif has_even_digits(stone):
new_stones.extend(split_number(stone))
else:
new_stones.append(stone * 2024)
return new_stones
def simulate_blinks(stones, blinks):
current_stones = stones[:]
for _ in range(blinks):
current_stones = transform_stones(current_stones)
return len(current_stones)
# Read input
stones = read_input("./input.txt")
# Part 1: 25 blinks
result1 = simulate_blinks(stones, 25)
print(str(result1))
# Part 2: 75 blinks
result2 = simulate_blinks(stones, 75)
print(str(result2)) |