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