30 lines
743 B
Python
30 lines
743 B
Python
#!/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))
|