This commit is contained in:
Sebastian Seedorf
2022-12-15 12:57:19 +01:00
parent b522c7fd11
commit 50f8acaa66
3 changed files with 86 additions and 0 deletions

29
day15/part1.py Normal file
View File

@@ -0,0 +1,29 @@
#!/usr/bin/env python3
import re
lines = (x.strip() for x in open("input.txt"))
target = 2000000
intervals = []
known_targets = set()
for line in lines:
x, y, a, b = map(int, re.search(r"(-?\d+).+?(-?\d+).+?(-?\d+).+?(-?\d+)", line).groups())
dist = abs(x-a) + abs(y-b)
width = dist-abs(y-target)
if width >= 0:
intervals.append((x-width, x+width))
if b == target:
known_targets.add(a)
if y == target:
known_targets.add(x)
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
for i in intervals[1:]:
if merged[-1][1] >= i[0]:
merged[-1] = (merged[-1][0], max(merged[-1][1], i[1]))
else:
merged.append(i)
print(sum(b-a+1 for a, b in merged)-len(known_targets))