Algorithmus zur Ermittlung der Mitte des größten freien Zeitfensters in der Periode?

Angenommen, ich möchte eine Sammlung von Ereignissen für den Zeitraum 00: 00–00: 59 planen. Ich plane sie auf volle Minuten (00:01, nie 00:01:30).

Ich möchte sie in diesem Zeitraum so weit wie möglich voneinander entfernen, aber ich weiß nicht im Voraus, wie viele Ereignisse ich in dieser Stunde insgesamt haben werde. Ich kann heute eine Veranstaltung ansetzen, morgen zwei weitere.

Ich habe den offensichtlichen Algorithmus im Kopf, und ich kann mir brachiale Möglichkeiten für die Implementierung vorstellen, aber ich bin sicher, dass jemand einen besseren Weg kennt. Ich würde Ruby oder etwas vorziehen, das ich in Ruby übersetzen kann, aber ich nehme, was ich bekommen kann.

Der Algorithmus, den ich mir in meinem Kopf vorstellen kann:

Event 1 endet erst um 00:00 Uhr.

Event 2 endet um 00:30 Uhr, da dieser Zeitpunkt am weitesten von bestehenden Events entfernt ist.

Event 3 könnte um 00:15 oder 00:45 enden. Vielleicht wähle ich einfach die erste, 00:15.

Event 4 endet dann um 00:45 Uhr.

Event 5 endet gegen 00:08 Uhr (aufgerundet von 00:07:30 Uhr).

Und so weiter.

Wir könnten uns also jedes Paar der aufgenommenen Minuten ansehen (z. B. 00: 00–00: 15, 00: 15–00: 30, 00: 30–00: 00) und den größten Bereich auswählen (00: 30–00: 00) ), dividiere es durch zwei und runde.

Aber ich bin sicher, es geht viel besser. Teile es!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage