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!