Algoritmo para encontrar o meio do maior espaço de tempo livre no período?

Digamos que eu queira agendar uma coleta de eventos no período 00: 00–00: 59. Eu os programo em minutos completos (00:01, nunca 00:01:30).

Quero espaçá-los o mais longe possível dentro desse período, mas não sei com antecedência quantos eventos terei total dentro dessa hora. Eu posso agendar um evento hoje, depois mais dois amanhã.

Eu tenho o algoritmo óbvio na minha cabeça, e posso pensar em formas de força bruta para implementá-lo, mas tenho certeza que alguém conhece uma maneira mais agradável. Eu prefiro o Ruby ou algo que eu possa traduzir para o Ruby, mas vou pegar o que puder.

Então, o algoritmo em que posso pensar na minha cabeça:

O evento 1 termina às 00:00.

O evento 2 termina às 00:30 porque esse horário é o mais distante dos eventos existentes.

O evento 3 pode acabar em 00:15 ou 00:45. Então talvez eu apenas escolha o primeiro, 00:15.

O evento 4 termina em 00:45.

O evento 5 acaba em algum lugar por volta de 00:08 (arredondado a partir de 00:07:30).

E assim por diante.

Assim, podemos olhar para cada par de minutos (digamos, 00: 00-00: 15, 00: 15–00: 30, 00: 30–00: 00), escolher o maior intervalo (00: 30–00: 00 ), divida por dois e por

Mas tenho certeza de que isso pode ser muito melhor. Compartilhe!

questionAnswers(4)

yourAnswerToTheQuestion