@mel163

Алгоритм построения графика?

Здравствуйте
Есть задача строить график записи на приём

есть расписание, разбито по 30 минут
т.е. 9.00 9.30 10.00 и тд
есть 3 врача (может быть сколько угодно)
каждый врач может быть как занят так и свободен в каждый интервал

запись на прием идет 1 час.
т.е. если у одно из врачей свободно 9.00 и 10.00 а 9.30 занято то мы не можем записаться на 9.00

в итоге мы должны получить сетку из времени с каждой из ячеек активной или нет.
т.е. например если 9.00 активно то мы подразумеваем что есть хотябы 1 врач к которому можно записаться на 9.00 и он сможет принимать 1 час.(свободные интервалы 9:00 и 9:30)
(т.е. по факту может получиться что например на 9 у всех время свободно, а на 9.30 занято соответственно клетка в 9.00 будет не активна)

Я понимаю что без какого-либо алгоритма это не решить.
Если только не перебором для всех вариантов всех способов, что как мне кажется не эффективно
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
не алгоритм, но на яваскрипте я бы как-то так сделал

doc1 = [850, 950, 1100]   // для удобства счета 800 = 8:00 850 = 8:30 итд
doc2 = [1100, 1200]
doc3 = [1000]
docs = [doc1, doc2, doc3]

STEP = 50 // 0.5 часа

for (let i = 800; i < 1400; i += STEP){
  console.log(i)
  const found = docs.filter(d => !d.some(time => [i - STEP, i, i + STEP].includes(time)))
  console.log(found)   // выводит доступных врачей на время i, или пустой массив, если никого нет
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы