From 794dd1475fdd8e57cea5d50d27aad5f95ebff8ba Mon Sep 17 00:00:00 2001 From: tebarius Date: Fri, 5 Dec 2025 21:06:28 +0100 Subject: [PATCH] 5-02 --- 05/05-2.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 05/05-2.py diff --git a/05/05-2.py b/05/05-2.py new file mode 100644 index 0000000..cc9cc2f --- /dev/null +++ b/05/05-2.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import time + +#file = "./ex.txt" +file = "./input.txt" + +def merge_intervals(intervals): + if not intervals: + return [] + intervals = sorted(intervals, key=lambda x: x[0]) + merged = [intervals[0]] + for start, end in intervals[1:]: + last_start, last_end = merged[-1] + if start <= last_end: + merged[-1] = (last_start, max(last_end, end)) + else: + merged.append((start, end)) + return merged + +if __name__ == "__main__": + time_start = time.time() + solution = 0 + fresh_ranges = [] + input_file = open(file, "r") + for line in input_file: + line = line.strip() + if line == "" or "-" not in line: + continue + else: + a,b = line.split('-') + a = int(a) + b = int(b) + fresh_ranges.append([a,b]) + id_set = set() + merged_ranges = merge_intervals(fresh_ranges) + for start, end in merged_ranges: + solution += (end - start + 1) + print(f"Solution: {solution} benötigte Zeit = {time.time()-time_start} s")