Browse Source

Дописал включенные инетрвалы

master
Дмитрий 3 years ago
parent
commit
71cd98670d
  1. 2
      readme.org
  2. 41
      task_3.py

2
readme.org

@ -1,6 +1,8 @@
#+title: Тестовое задание #+title: Тестовое задание
#+date: [2022-07-12 вт 17:54] #+date: [2022-07-12 вт 17:54]
https://docs.google.com/document/d/1Y_JYZmbKUmJEkGp9bdJz6SjtaFXuJNrRrxHN1dXnPzY/edit
* Задача №1 * Задача №1
Дан массив чисел, состоящий из некоторого количества подряд идущих единиц, за которыми следует какое-то количество подряд идущих нулей: 111111111111111111111111100000000. Дан массив чисел, состоящий из некоторого количества подряд идущих единиц, за которыми следует какое-то количество подряд идущих нулей: 111111111111111111111111100000000.

41
task_3.py

@ -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:

Loading…
Cancel
Save