#!/usr/bin/env python3 import re lines = (x.strip() for x in open("input.txt")) lines = [tuple(map(int, re.search(r"(-?\d+).+?(-?\d+).+?(-?\d+).+?(-?\d+)", line).groups())) for line in lines] for target in range(0, 4000000): #3186981 if target % 40000 == 0: print(target/4000000) intervals = [] known_targets = set() for line in lines: x, y, a, b = line 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) if len(merged) > 1: print(target, merged, (merged[0][1]+1)*4000000+target) break