Closed cariboula closed 3 years ago
Ich denke, dass wir folgendes berücksichtigen müssen:
Man könnte das wohl wie folgt berechnen (Pseudo-Pseudo-Code):
Rufe alle Tage des Monats inkl. der eingetragenen Verfügbarkeiten ab
Sortiere die Tage nach eingetragenen Verfügbarkeiten (Tage mit wenigsten Einträgen zuerst)
Rufe alle Nutzer ab, die sich gemeldet haben
Rufe ab, wie viele Gärtner maximal pro Tag benötigt werden
Für jeden dieser Tage:
Rufe alle Gärtnern mit Verfügbarkeit für diesen Tag ab
Prüfe, ob sich mind. ein Gärtner gemeldet hat, falls nicht, berücksichtige diesen Tag nicht weiter und fahre mit nächsten Tag fort
Sortiere diese Gärtner nach bereits zugewiesenen Gießtagen diesen Monats (wenigste Gießtage zuerst)
Weise den ersten Nutzer zu
Prüfe, ob dessen max. Anzahl an Gießtagen damit erreicht ist. Falls ja, berücksichtige ihn nicht weiter
Prüfe, ob Anzahl der Durchläufe kleiner als die maximalen Gärtneranzahl pro Tag ist. Falls ja, weiterer Durchlauf
Andernfalls: Done, der perfekte Plan.
Synthetisches Szenario entwerfen und auf dessen Basis die Gießplanverteilung berechnung.
Toll wäre das ganze als Unit Test im Backend zu haben.