59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
|
|
#! Part 1
|
|
|
|
file = open("input.txt").readlines()
|
|
sum = 0
|
|
|
|
for line in range(len(file)):
|
|
game = file[line].split(";")
|
|
possible = True
|
|
|
|
for set in game:
|
|
red_pos = set.find(" r")
|
|
green_pos = set.find(" g")
|
|
blue_pos = set.find(" b")
|
|
positions = [red_pos, green_pos, blue_pos]
|
|
vals = [0, 0, 0]
|
|
|
|
for pos in range(len(positions)):
|
|
if positions[pos] != -1:
|
|
vals[pos] = int(set[positions[pos]-2:positions[pos]])
|
|
|
|
if vals[0] > 12 or vals[1] > 13 or vals[2] > 14:
|
|
possible = False
|
|
|
|
if possible:
|
|
sum += line+1
|
|
print("Part 1: " + str(sum))
|
|
|
|
|
|
|
|
#! Part 2
|
|
|
|
file = open("input.txt").readlines()
|
|
sum = 0
|
|
|
|
for line in range(len(file)):
|
|
game = file[line].split(";")
|
|
game_sum = 0
|
|
max_vals = [0, 0, 0]
|
|
|
|
for set in game:
|
|
red_pos = set.find(" r")
|
|
green_pos = set.find(" g")
|
|
blue_pos = set.find(" b")
|
|
positions = [red_pos, green_pos, blue_pos]
|
|
vals = [0, 0, 0]
|
|
|
|
for pos in range(len(positions)):
|
|
if positions[pos] != -1:
|
|
vals[pos] = int(set[positions[pos]-2:positions[pos]])
|
|
|
|
for i in range(len(max_vals)):
|
|
if vals[i] > max_vals[i]:
|
|
max_vals[i] = vals[i]
|
|
|
|
game_sum += max_vals[0] * max_vals[1] * max_vals[2]
|
|
sum += game_sum
|
|
print("Part 2: " + str(sum))
|