Алгоритм нахождения середины наибольшего свободного временного интервала в периоде?

Скажем, я хочу запланировать сбор событий на период 00: 00 & # x2013; 00: 59. Я планирую их на полных минут (00:01, никогда 00:01:30).

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

У меня в голове очевидный алгоритм, и я могу придумать, как его реализовать, но уверен, кто-то знает более хороший способ. Я бы предпочел Ruby или что-то, что я могу перевести на Ruby, но я возьму то, что смогу получить.

Итак, алгоритм, который я могу придумать в своей голове:

Событие 1 заканчивается в 00:00.

Событие 2 заканчивается в 00:30, потому что это время является самым дальним из существующих событий.

Событие 3 может закончиться в 00:15 или 00:45. Так что, возможно, я просто выберу первый, 00:15.

Событие 4 заканчивается в 00:45.

Событие 5 заканчивается где-то около 00:08 (округлено с 00:07:30).

И так далее.

Таким образом, мы могли бы посмотреть на каждую пару взятых минут (скажем, 00: 00 & # x2013; 00: 15, 00: 15 & # x2013; 00: 30, 00: 30 & # x2013; 00: 00), выбрать самый большой диапазон (00 : 30 & # x2013; 00: 00), разделите его на два и округлите.

Но я уверен, что это можно сделать намного приятнее. Делитесь!

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

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