@@ -24,25 +24,22 @@ def parse_game(line: str) -> Game:
24
24
return int (id .split (" " )[- 1 ]), [parse_rgb (x ) for x in subsets .split ("; " )]
25
25
26
26
27
- with open ("2023/input/02.txt" , encoding = "utf-8" ) as f :
28
- input = [parse_game (line .strip ()) for line in f .readlines ()]
29
-
30
- possible_games = [
31
- game
32
- for game in input
33
- if all (r <= 12 and g <= 13 and b <= 14 for r , g , b in game [1 ])
34
- ]
35
-
36
- print ("Part one:" , sum (game [0 ] for game in possible_games ))
27
+ def is_possible (game : Game ) -> bool :
28
+ return all (r <= 12 and g <= 13 and b <= 14 for r , g , b in game [1 ])
37
29
38
30
39
31
def power (game : Game ) -> int :
40
- r_max , g_max , b_max = game [ 1 ][ 0 ]
41
- for r , g , b in game [1 ][ 1 :] :
32
+ r_max , g_max , b_max = 0 , 0 , 0
33
+ for r , g , b in game [1 ]:
42
34
r_max = max (r_max , r )
43
35
g_max = max (g_max , g )
44
36
b_max = max (b_max , b )
45
37
return r_max * g_max * b_max
46
38
47
39
48
- print ("Part two:" , sum (power (game ) for game in input ))
40
+ with open ("2023/input/02.txt" , encoding = "utf-8" ) as f :
41
+ input = f .readlines ()
42
+
43
+ games = [parse_game (line .strip ()) for line in input ]
44
+ print ("Part one:" , sum (game [0 ] for game in games if is_possible (game )))
45
+ print ("Part two:" , sum (power (game ) for game in games ))
0 commit comments