Составление расписания

Итак ... кто-то недавно попросил меня составить расписание для них, и я согласился. Когда я сел, чтобы сделать это, я понял, что это сложнее, чем я думал. Это просто расписание для смены 4 человек на день или ночь.

Я думал о чем-то вроде этого:

for Monday to Saturday {
  for(i=0;i<people.length;i++){
    if (person[i].available()){
      person.worksDay()
      person is now not available.
    }
  }

  for(i=0;i<people.length;i++){
    if (person[i].available()){
      person[i].worksNight()
      person[i] is now not available.
    }
  }
}

Таким образом, идея этого алгоритма заключается в том, что на каждый день человеку назначается дневная или ночная смена. Человек доступен, если он просто не работал в смену и не в отпуске. Это с понедельника по субботу. Как вы, вероятно, можете сказать, для заданных лиц A, B, C, D задание будет выглядеть следующим образом (если никто не в отпуске):

Mon A B
Tue C D
Wed A B
Th  C D
Fri A B
Sat C D

Это работает, я думаю, но это немного очевидно. Человек, который спросил меня, хотел увидеть разные варианты. Есть ли лучший способ сделать это, чтобы увидеть больше, чем просто этот вариант? Или есть даже программа, которая делает это для вас?

Ответы на вопрос(3)

Ваш ответ на вопрос