|
|
@ -92,10 +92,38 @@ def find_intersection(interval_A, interval_B) -> list: |
|
|
|
return [interval_begin, interval_end] |
|
|
|
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): |
|
|
|
def appearance(intervals): |
|
|
|
lesson = intervals["lesson"] |
|
|
|
lesson = intervals["lesson"] |
|
|
|
pupil = intervals["pupil"] |
|
|
|
pupil = intervals["pupil"] |
|
|
|
tutor = intervals["tutor"] |
|
|
|
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 = [ |
|
|
|
pupil_on_lesson = [ |
|
|
|