def solve(): with open("./input.txt", "r") as f: initial_stones = [int(x) for x in f.readline().split()] def blink(stones): new_stones = [] for stone in stones: if stone == 0: new_stones.append(1) elif len(str(stone)) % 2 == 0: s = str(stone) mid = len(s) // 2 left = int(s[:mid]) right = int(s[mid:]) new_stones.append(left) new_stones.append(right) else: new_stones.append(stone * 2024) return new_stones # Part 1: 25 blinks stones = initial_stones[:] # Create a copy to avoid modifying the original for _ in range(25): stones = blink(stones) print(len(stones)) # Part 2: 75 blinks stones = initial_stones[:] # Reset to the initial state for _ in range(75): stones = blink(stones) print(len(stones)) solve()