File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed
Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ 1117 0 8 21078 2389032 142881 93 385
Original file line number Diff line number Diff line change 1+ 125 17
Original file line number Diff line number Diff line change 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 ())
You can’t perform that action at this time.
0 commit comments