Назначение учеников в классе - поток в сети? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть одна комната, которая открыта несколько дней в неделю, каждый день в разные часы (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      |
|     . . .     |     . . .       |
+---------------+-----------------+

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

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

Flow in network

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

...