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))