@ -69,18 +69,43 @@ tests = [
]
]
def get_smaller_interval ( interval_A , interval_B ) - > list :
""" Если один из интервалов включает в себя другой, возвращаем
меньший . Если интервалы не входят друг в дргуа , возвращаем пустой
интервал . """
if interval_A [ 0 ] < = interval_B [ 0 ] and interval_A [ 1 ] > = interval_B [ 1 ] :
return interval_B
if interval_B [ 0 ] < = interval_A [ 0 ] and interval_B [ 1 ] > = interval_A [ 1 ] :
return interval_A
return [ ]
def absorb_small_included_intervals ( intervals : list ) - > list :
def absorb_small_included_intervals ( intervals : list ) - > list :
# задача -- поглотить маленькие интервалы, входящие в большие,
""" Если в списке есть вложенные интервалы (интревал меньшего
# чтобы не было полностю пересекающихся интервалов
размера , полностью входящий в больший ) , то убирает их и возвращает
pass
список без них .
Стоит учитывать , что функция работает только если интервалы
совпадают по началу или концу , если интервалы входят друг в друга
частично - - мы их не обрабатываем .
def remove_small_intervals_in_bigger_intervals ( interval_A , interval_B ) - > list :
"""
if interval_A [ 0 ] < interval_B [ 0 ] and interval_A [ 1 ] > interval_B [ 1 ] :
return interval_A
if interval_B [ 0 ] < interval_A [ 0 ] and interval_B [ 1 ] > interval_A [ 1 ] :
small_intervals = [
return interval_B
get_smaller_interval ( interval , intervals [ k ] )
for i , interval in enumerate ( intervals )
for k in range ( i + 1 , len ( intervals ) )
if get_smaller_interval ( interval , intervals [ k ] )
]
print ( f " { small_intervals =} " )
result = [ i for i in intervals if i not in small_intervals ]
print ( f " { result =} " )
print ( f " { intervals =} " )
return result
def find_inner_sum_of_intersections ( interval_A , interval_B ) - > list :
def find_inner_sum_of_intersections ( interval_A , interval_B ) - > list :