Skip to content

Commit 1d9f033

Browse files
Day11 2024 finished
1 parent f7e2e7a commit 1d9f033

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

2024/inputs/day11

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1117 0 8 21078 2389032 142881 93 385

2024/inputs/day11_ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
125 17

2024/src/day11.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from common import *
2+
3+
DAY_NUMBER = 11
4+
USE_EXAMPLE = False
5+
6+
7+
with get_data(DAY_NUMBER, USE_EXAMPLE) as f:
8+
starting_stones = [int(i) for i in f.readline().strip().split()]
9+
stones_count = {}
10+
for i in starting_stones:
11+
stones_count[i] = stones_count.get(i, 0) + 1
12+
13+
14+
def blink(stones):
15+
new_stones = {}
16+
for key, value in stones.items():
17+
if key == 0:
18+
new_stones[1] = new_stones.get(1, 0) + value
19+
elif len(str(key)) % 2 == 0:
20+
left = int(str(key)[: len(str(key)) // 2])
21+
right = int(str(key)[len(str(key)) // 2 :])
22+
new_stones[left] = new_stones.get(left, 0) + value
23+
new_stones[right] = new_stones.get(right, 0) + value
24+
else:
25+
new_stones[key * 2024] = new_stones.get(key * 2024, 0) + value
26+
27+
return new_stones
28+
29+
30+
def part_one():
31+
stones = stones_count.copy()
32+
for _ in range(25):
33+
stones = blink(stones)
34+
35+
return sum(stones.values())
36+
37+
38+
def part_two():
39+
stones = stones_count.copy()
40+
for _ in range(75):
41+
stones = blink(stones)
42+
43+
return sum(stones.values())
44+
45+
46+
print_result(DAY_NUMBER, 1, part_one())
47+
print_result(DAY_NUMBER, 2, part_two())

0 commit comments

Comments
 (0)