코드
//확인할 range들의 list
ranges_old:list[range] = [
range(1, 10),
range(5, 15),
range(20, 30),
range(25, 35),
range(30, 40),
range(2, 12),
range(45, 80)
]
//합쳐질 range들의 list
ranges_new:list[range] = []
result = True
while True:
x = ranges_old[0]
count = 0
//하나씩 확인하면서 교차를 확인
for i in range(1, len(ranges_old)):
xs = set(x)
y = ranges_old[i - count]
ip = xs.intersection(y)
//겹치는 range가 있으면 합치기
if len(ip) > 0:
begin = min(x.start, y.start)
end = max(x.stop, y.stop)
x = range(begin, end)
ranges_old.pop(i - count)
count += 1
result = False
ranges_new.append(x)
ranges_old.pop(0)
//더 이상 합칠 range가 없다면 완료
if result or len(ranges_old) == 0:
break
print(ranges_new)
결과
[range(1, 15), range(20, 40), range(45, 80)]