From 1c343f5b73fbee6da3ea972bfbe72c8eebbd3eb5 Mon Sep 17 00:00:00 2001 From: Starnakin Date: Fri, 5 Dec 2025 22:47:34 +0100 Subject: [PATCH] add: day05: part2 pls never read this code pls pls --- 2025/day05/part2.py | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 2025/day05/part2.py diff --git a/2025/day05/part2.py b/2025/day05/part2.py new file mode 100644 index 0000000..377de2f --- /dev/null +++ b/2025/day05/part2.py @@ -0,0 +1,49 @@ +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) \ No newline at end of file