Work Schedule Generator

Work Schedule Generator

example

Sie erhalten eine Reihe von Mitarbeitern mit deren Arbeitsvorlieben und Fähigkeiten. Außerdem haben Sie geschäftliche Anforderungen in Bezug auf die erforderliche Arbeitszeit und die Aufgaben. Ihre Funktion sollte einen Zeitplan zurückgeben, der die geschäftlichen Anforderungen mit den verfügbaren Mitarbeitern erfüllt (wenn das möglich ist). Lassen Sie uns nun in die Details gehen.

staff ist ein dictionary, wobei die Schlüssel Namen von Mitarbeitern und die Werte dictionaries sind. Jedes Werte wörterbuch enthält drei Schlüssel-Wert-Paare:

  • "pref_shifts" - list of strings: shifts, employee wants to work at (kann "first", "second" oder beides in dieser Reihenfolge sein);
  • "days_off" - list of strings: Tage, an denen der Mitarbeiter frei haben möchte (vollständige Namen der Wochentage);
  • "skills" - list of strings: Jobs, die der Mitarbeiter machen darf.

business_needs ist ein list von drei Werten: ein Wochentag, für den ein Zeitplan erstellt werden soll - string; Anzahl der Schichten, die an diesem Tag sein sollen - integer; Aufgaben, die an diesem Tag erledigt werden sollen - list von strings.

Hinweis zu den Schichten. Jeder Mitarbeiter kann in der ersten Schicht, in der zweiten Schicht oder in beiden Schichten (ganztägig) arbeiten, außer an seinen freien Tagen. Die Anzahl der Schichten für ein Unternehmen bedeutet die Anzahl der verschiedenen Schichten, die an diesem Tag vorhanden sind. Wenn die Anzahl der Schichten 3 beispielsweise von einem Mitarbeiter abgedeckt wird, der den ganzen Tag arbeitet (seine beiden Schichten, "erste" und "zweite", insgesamt - 2) und einem weiteren Mitarbeiter (denn jeder Mitarbeiter hat mindestens eine Schicht), oder von drei Schichten eines anderen Mitarbeiters. Die Anzahl der Schichten sollte zu gleichen Teilen auf "first" und "second" aufgeteilt werden. Wenn die Anzahl der Schichten ungerade ist (und nicht gleich 1), muss "first" Tagesschicht eine Schicht mehr enthalten als "second" Tagesschicht.

Die Fähigkeiten können bei verschiedenen Mitarbeitern teilweise/vollständig gleich sein. Wenn Sie also die Tagesschichten besetzen, wählen Sie Mitarbeiter mit einer geringeren Anzahl von Fähigkeiten - sie werden in der Regel schlechter bezahlt. Wenn die Anzahl gleich ist, wählen Sie alphabetisch nach Namen aus. Aus der Sicht der Mitarbeiter hat die erste Tagesschicht Vorrang: Es ist wichtiger, dass dort Mitarbeiter mit weniger Fähigkeiten eingesetzt werden. Die Aufgaben sind eine...

You should be an authorized user in order to see the full description and start solving this mission.