Algorytm do znalezienia środka największego wolnego przedziału czasowego w okresie?

Powiedz, że chcę zaplanować zbiór wydarzeń w okresie 00: 00–00: 59. Planuję je na pełne minuty (00:01, nigdy 00:01:30).

Chcę w tym okresie umieścić je jak najdalej od siebie, ale nie wiem z góry, ile wydarzeń będę miał w ciągu tej godziny. Mogę dzisiaj zaplanować jedno wydarzenie, a potem jeszcze dwa jutro.

Mam w głowie oczywisty algorytm i mogę wymyślić brutalne sposoby jego wdrożenia, ale jestem pewien, że ktoś zna milszy sposób. Wolałbym Ruby lub coś, co mogę przetłumaczyć na Ruby, ale wezmę to, co mogę dostać.

Algorytm, o którym myślę w mojej głowie:

Wydarzenie 1 kończy się o godzinie 00:00.

Wydarzenie 2 kończy się o 00:30, ponieważ ten czas jest najdalej od istniejących wydarzeń.

Wydarzenie 3 może skończyć się o 00:15 lub 00:45. Więc może po prostu wybiorę pierwszą, 00:15.

Wydarzenie 4 kończy się w 00:45.

Wydarzenie 5 kończy się gdzieś około 00:08 (zaokrąglone w górę od 00:07:30).

I tak dalej.

Możemy więc przyjrzeć się każdej parze minut (powiedzmy 00: 00–00: 15, 00: 15–00: 30, 00: 30–00: 00), wybrać największy zakres (00: 30–00: 00 ), podziel go przez dwa i rundy.

Ale jestem pewien, że można to zrobić o wiele ładniej. Zrób to!

questionAnswers(4)

yourAnswerToTheQuestion