Все 3 задачи решены, проведен рефакторинг.
@ -1,4 +1,8 @@
"""Функции для чистки инервалов."""
"""Модуль, содержащий функции для чистки интервалов.
Под 'чисткой' подразумевается:
- удаление меньших интервалов, полностью входящих в большие (поглощение)
- расширение пересекающихся интервалов (сумма интервалов)
"""
def get_smaller_interval(interval_A, interval_B) -> list:
@ -96,6 +100,6 @@ def normilize_intervals(intervals) -> list:
# получаем расширенные интервалы
extended_intervals = get_extended_intervals(intervals_)
# убираем вложенные инетрвалы
# убираем вложенные интервалы
n_intervals = absorb_small_included_intervals(intervals_ + extended_intervals)
return n_intervals
@ -1,7 +1,12 @@
#+title: Тестовое задание
#+date: [2022-07-12 вт 17:54]
https://docs.google.com/document/d/1Y_JYZmbKUmJEkGp9bdJz6SjtaFXuJNrRrxHN1dXnPzY/edit
* Предисловие
Я умею работать с git и понимаю, что нельзя так сходу коммитить в мастер. Но в данном случае я пожертвовал правильностью ведения репозитория ради скорости разработки.
Третья задача была самой интересной. :)
Использовал Python 3.10.4.
* Задача №1
@ -1,5 +1,5 @@
"""Задание на расчет интервалов, и вычисление времени, которое ученик
и учитель присуствовали на уроке одновременно."""
и учитель присутствовали на уроке одновременно."""
from intervals_cleaning import normilize_intervals
tests = [
@ -101,7 +101,7 @@ def get_intersection(interval_A, interval_B) -> list:
def appearance(intervals) -> int:
"""Возвращает время одновременного присуствия ученика и учителя на
"""Возвращает время одновременного присутствия ученика и учителя на
уроке в секундах."""
lesson = intervals["lesson"]
pupil = normilize_intervals(intervals["pupil"])