У меня есть следующие временные интервалы в течение одного дня:
1) с 9:00 до 13: 00
2) с 9: 30 до 10: 30
3) с 9: 30 до 10:30 (этот интервал намеренно здесь 2x)
4) с 11: 00 до 12: 00
Я могу визуализировать временные интервалы на горизонтальной временной линии:
Временной интервал 1)
|--------------------------------------------|
9:00 13:00
Временной интервал 2)
|-------------|
9:30 10:30
Временной интервал 3)
|-------------|
9:30 10:30
Временной интервал 4)
|-------------|
11:00 12:00
Я пытаюсь понять метод Python, который займет N временных интервалов на входе и вернет различные временные окна плюс сколько раз окно перекрывает другое. В приведенном выше примере ожидаемый результат должен выглядеть следующим образом:
Окно 1: 9:00 — 9:30, Количество слотов 1
Окно 2: 9:30 — 10:30, Количество слотов 3
Окно 3: 10:30 — 11:00, Количество слотов 1
Окно 4: 11:00 — 12:00, Количество слотов 2
Окно 5: 12:00 — 13:00, Количество слотов 1
Кто-нибудь может указать мне правильное направление, как решить эту проблему в Python 3?
Используйте средства в наборах sympy: intervals, чтобы сделать манипулирование интервалами более удобным. Это первая часть.
Выполните вычисление рекурсивно. Начните с любого из заданных интервалов, начните с него как с «первого перекрестка» и «вниз» на один шаг. Выберите другой интервал и вычислите пересечение с ним предыдущего пересечения. Если это пересечение непусто, перейдите «вниз» еще на один шаг. В противном случае Вернитесь наверх с этим пересечением в качестве значения пересечений рассматриваемых интервалов. Аналогично, если пройденный перекресток пуст, идите «вверх» и возвращайтесь оттуда. Начните с каждого из заданных интервалов.