community-garden / pergola-fullstack

server and frontend for the our-garden App and API
1 stars 1 forks source link

Algorithmen mit Mockupdaten implementieren #5

Closed cariboula closed 3 years ago

bastiion commented 3 years ago

Synthetisches Szenario entwerfen und auf dessen Basis die Gießplanverteilung berechnung.

Toll wäre das ganze als Unit Test im Backend zu haben.

pminf commented 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.