40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
#!/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 st, en in merged_ranges:
|
|
solution += (en - st + 1)
|
|
print(f"Solution: {solution} benötigte Zeit = {time.time()-time_start} s")
|