@@ -49,6 +49,15 @@ def blink_n_times(stones: dict[int, int], n: int) -> dict[int, int]:
49
49
return stones
50
50
51
51
52
+ def print_cache_info ():
53
+ num_digits_cache = num_digits .cache_info ()
54
+ split_cache = split .cache_info ()
55
+ print (f"num_digits: { num_digits_cache .hits } hits, { num_digits_cache .misses } misses" )
56
+ print (f"split: { split_cache .hits } hits, { split_cache .misses } misses" )
57
+ num_digits .cache_clear ()
58
+ split .cache_clear ()
59
+
60
+
52
61
def main ():
53
62
start_stones = Counter ([int (stone ) for stone in aoc .read ().split ()])
54
63
if aoc .args .verbose :
@@ -59,26 +68,21 @@ def main():
59
68
print (f"{ aoc .args .num_blinks } blinks: { sum (stones .values ())} " )
60
69
61
70
if aoc .args .cache_info :
62
- print (f"num_digits: { num_digits .cache_info ().hits } hits, { num_digits .cache_info ().misses } misses" )
63
- print (f"split: { split .cache_info ().hits } hits, { split .cache_info ().misses } misses" )
71
+ print_cache_info ()
64
72
65
73
exit (0 )
66
74
67
75
stones = blink_n_times (start_stones , 25 )
68
76
print (f"p1: { sum (stones .values ())} " )
69
77
70
78
if aoc .args .cache_info :
71
- print (f"num_digits: { num_digits .cache_info ().hits } hits, { num_digits .cache_info ().misses } misses" )
72
- print (f"split: { split .cache_info ().hits } hits, { split .cache_info ().misses } misses" )
73
- num_digits .cache_clear ()
74
- split .cache_clear ()
79
+ print_cache_info ()
75
80
76
81
stones = blink_n_times (start_stones , 75 )
77
82
print (f"p2: { sum (stones .values ())} " )
78
83
79
84
if aoc .args .cache_info :
80
- print (f"num_digits: { num_digits .cache_info ().hits } hits, { num_digits .cache_info ().misses } misses" )
81
- print (f"split: { split .cache_info ().hits } hits, { split .cache_info ().misses } misses" )
85
+ print_cache_info ()
82
86
83
87
84
88
if __name__ == "__main__" :
0 commit comments