Генерация расписания из документа Google о доступности участников - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть электронная таблица Google Doc, в которой содержится информация о доступности каждого члена группы для встреч в определенное время недели.В течение недели необходимо проводить несколько собраний, при этом разные члены группы должны присутствовать на определенных собраниях.Мне нужен способ составить расписание, основанное на этом, чтобы большинство участников могло присутствовать на каждом собрании.Ни одно из собраний не может проводиться в одно и то же время.

Таблица содержит строку для каждого состоявшегося собрания.Каждый столбец представляет временной интервал (например, понедельник с 18:30 до 20:00), в который могут проводиться собрания.Ячейки, соответствующие определенному собранию и определенному временному интервалу, содержат число, представляющее количество людей, которые могут посетить каждое собрание.Если ячейка содержит то же число, что и число участников, зарегистрировавшихся на совещание, то Google docs автоматически подсвечивает эту ячейку.

Я пытаюсь решить эту проблему с помощью возможностей сценариев Google docs.чтобы сделать это, но у меня возникли проблемы с выяснением алгоритма.Все, что мне действительно нужно, это какой-то псевдокод, и я могу написать его.

Предположим, в моем скрипте у меня есть двумерный массив ячеек, а также двумерный логический массив, соответствующий тому, выделена ли ячейка.(имеется в виду максимальное количество участников, которое может присутствовать)

Вот пример того, как выглядит таблица:

|Meeting    |Mon 6:30-8:30pm |Mon 8:30-10:30pm |Tue 6:30-8:30pm |Tue 8:30-10:30pm |
|-----------|----------------|-----------------|----------------|-----------------|
|Meeting 1  |7               |9                |8               |6                |
|Meeting 2  |3               |5                |1               |4                |
|Meeting 3  |10              |15               |12              |8                |
|-----------|----------------|-----------------|----------------|-----------------|

Спасибо за помощь!

1 Ответ

0 голосов
/ 16 апреля 2011

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

firstScheduled = max(max(meeting1), max(meeting2), max(meeting3));

После этого посмотрите на остальные собрания.и посмотрите, какая из них имеет максимально возможную посещаемость в незапланированные в настоящее время дни:

foreach meeting as m
    foreach day as d
        if d is currently scheduled
            m = 0  // set all attendees to 0; no one can come, since the'll be
                   // at the other meeting
        end if
    end for

    highestAttendanceDate = max(meeting1)
end for

Затем просто повторяйте это до тех пор, пока не будут запланированы все встречи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...