From ecfef4fe380851919cf00191bc8e39fece92c98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 14 Jul 2022 16:19:08 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D1=85=D0=BB=D0=BE=D0=BF=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9D=D0=B5=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D0=BA=D0=B0=D0=BA=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=BE=D1=81=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Выходные интервалы разной длины --- task_3.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/task_3.py b/task_3.py index 0e97389..c0309f3 100644 --- a/task_3.py +++ b/task_3.py @@ -92,10 +92,38 @@ def find_intersection(interval_A, interval_B) -> list: return [interval_begin, interval_end] +def enlarge_elapsed_intervals(intervals): + # ключ - начало, значние - конец. Если по ключу "начало" уже есть + # значение, то сохраняем max(существующее, новое) + beginnings = {interval[0]: interval[1] for interval in intervals} + endings = {interval[1]: interval[0] for interval in intervals} + + for interval in intervals: + begin = interval[0] + end = interval[1] + + beginnings[begin] = max(beginnings[begin], end) + endings[end] = min(endings[end], begin) + + print(f"{beginnings=}") + print(f"{endings=}") + beginnings_list = list(beginnings.values()) + endings_lsit = list(endings.values()) + test = [ + [endings_lsit[i], beginnings_list[i]] for i in range(len(beginnings_list) - 1) + ] + return test + + def appearance(intervals): lesson = intervals["lesson"] pupil = intervals["pupil"] tutor = intervals["tutor"] + pupil2 = [pupil[i : i + 2] for i in range(0, len(pupil), 2)] + # print(f"{pupil2=}") + # pupil2 = enlarge_elapsed_intervals(pupil2) + + enlarge_elapsed_intervals(test) # получаем все интервалы студента на уроке pupil_on_lesson = [