Назначение учеников в классе - поток в сети?

У меня есть одна комната, которая открыта несколько дней в неделю, каждый день в разные часы (7:00-14:42, ...)

У меня несколько студентов, каждый из которых может посещать комнату в разные дни, в разные часы (у студентов может быть время посетить комнату за несколько дней)

Мне нужно назначить всех (или больше, чем я могу) студентов в комнату по следующим правилам:

  • Каждый студент должен посещать комнату один раз в неделю ровно на 50 минут.
  • После (только) 2-го студента в комнате, комната будет недоступна в течение следующих 20 минут

Пример второго правила:

+---------------+-----------------+
|     TIME      |     INFO        |
+---------------+-----------------+
|  7:00 - 7:50  |  Student 1      |
|  7:50 - 8:40  |  Student 2      |
|  8:40 - 9:00  | Mandatory break | // No student may be here
|  9:00 - 9:50  |  Student 3      |
|  9:50 - 10:40 |  Student 4      |
| 10:40 - 11:30 |  Student 5      |
|     . . .     |     . . .       |
+---------------+-----------------+

Как я могу решить это? Я думал об использовании потока в сетях, но я столкнулся с проблемой.

Допустим, у меня есть этот поток. Когда ученик подключается ко времени, поток должен пройти через все группы, которые содержат время. Если какая-либо из этих групп занята, поток не может идти туда. Поэтому, когда ученик подключается ко времени, все времена, которые могут перекрываться со временем ученика, отключаются. Но я не знаю, как построить алгоритм, который позволил бы это.

Поток в сети

Не могли бы вы сказать мне, как сделать алгоритм, чтобы эта работа? Я не знаю, как это сделать. Спасибо!

0 ответов

Другие вопросы по тегам