Files
AOC/2025/day05/part2.py

49 lines
1.2 KiB
Python

text: str
with open("input.txt") as f:
text = f.read()
total: int = 0
ranges_str, dates = text.split("\n\n")
ranges: list[list[int, int]] = []
for range_str in ranges_str.splitlines():
start, stop = range_str.split("-")
ranges.append([int(start), int(stop)])
range_wo_overlap: list[list[int, int]] = []
bozo2 = 1
bozo = True
while bozo:
bozo = False
range_wo_overlap: list[list[int, int]] = []
for start, stop in ranges[::bozo2]:
placed: bool = False
for i, value in enumerate(range_wo_overlap):
start2, stop2 = value
if (start2 <= start <= stop2):
if (stop > stop2):
range_wo_overlap[i][1] = stop
bozo = True
placed = True
break
if (start2 <= stop <= stop2):
if (start < start2):
range_wo_overlap[i][0] = start
bozo = True
placed = True
break
if not placed:
range_wo_overlap.append([start, stop])
ranges = range_wo_overlap
bozo2 *= -1
print(ranges)
for start, stop in ranges:
total += stop - start + 1
print(total)