This commit is contained in:
Sebastian Seedorf
2023-12-05 16:25:04 +01:00
parent afd8903897
commit e40de697eb
3 changed files with 197 additions and 0 deletions

30
day03/part2.py Normal file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env python3
import re
lines = (x.strip() for x in open("input.txt"))
result = 0
nums = [dict(), dict(), dict()]
signals = []
DIGIT = re.compile("\d+")
for idx, line in enumerate(lines):
next_num_items = [(idx, match.start(), match.end(), int(line[match.start():match.end()])) for match in DIGIT.finditer(line)]
next_num_items = {i: val for val in next_num_items for i in range(val[1], val[2])}
next_char_idxs = [j for j, char in enumerate(line) if char in "*"]
nums = nums[1:] + [next_num_items]
# check
for signal in signals:
found = set()
for i in range(signal-1, signal+2):
for j in range(0, 3):
if i in nums[j]:
found.add(nums[j][i])
if len(found) == 2:
result += found.pop()[3] * found.pop()[3]
signals = next_char_idxs
print(result)