Folgende Aufgabe habe ich für Euch (Wer mag kann es ja mal versuchen):
Nehme wir mal an wir haben eine Bücherei, die jeden Dienstag öffnet.
Es sollten 2 Biblothekare pro Dienstag anwesend sein.
In Summe gibt es 5 gemeinnützige Frauen die hier zur Verfügung stehen.
Nennen wir Sie doch mal beim Namen: Michaela, Gudrun, Maria, Kerstin und Rita.
Die Bücherei ist 52 Wochen im Jahr geöffnet, also auch an den Feiertagen.
Nun die Aufgabe:
Wie müssen die 5 Frauen über die 52 Wochen verteilt werden das jeder mit jeden und von der Häufigkeit höchsten 1mal mehr als manch andere dran kommt?
Wie ist die Verteilung wenn statt 2 Frauen, noch eine Dritte erforderlich ist (auch hier jeder mit jeden, gleich oft und nicht mehr als 1x mehr als der Rest).
Bitte als PureBasic Program lösen.
Kombinatorik: Dienstags-Team einer Bücherei festlegen
Kombinatorik: Dienstags-Team einer Bücherei festlegen
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Re: Kombinatorik: Dienstags-Team einer Bücherei festlegen
Wozu in PB ?
Die möglichen Kombinationen sind:
12, 13, 14, 15, 23, 24, 25, 34, 35, 45 (also 10 Möglichkeiten, 5 über 2)
Dieses "Muster" wiederholt sich nun alle 10 Wochen, sodass in der 51. und 52. die einzigen "1mal mehr" Termine sind.
Bei drei Frauen das selbe: 5 über 3 also ebenfalls 10 Möglichkeiten:
123, 124, 125, 134, 135, 145, 234, 235, 245, 345
Auch hier gibt es 5 mal diese 10 Wochen und dann 2 Wochen extra.
Hier mal ein PB-Code für eine Kombinationsliste:
Die möglichen Kombinationen sind:
12, 13, 14, 15, 23, 24, 25, 34, 35, 45 (also 10 Möglichkeiten, 5 über 2)
Dieses "Muster" wiederholt sich nun alle 10 Wochen, sodass in der 51. und 52. die einzigen "1mal mehr" Termine sind.
Bei drei Frauen das selbe: 5 über 3 also ebenfalls 10 Möglichkeiten:
123, 124, 125, 134, 135, 145, 234, 235, 245, 345
Auch hier gibt es 5 mal diese 10 Wochen und dann 2 Wochen extra.
Hier mal ein PB-Code für eine Kombinationsliste:
Code: Alles auswählen
Procedure BinomialList(n.i, k.i, List Combination.s(), n0.i=1, String.s="")
Protected i
If k = 0
ProcedureReturn #False
ElseIf k = 1
For i = n0 To n
AddElement(Combination())
Combination() = String+Chr(i+'A'-1)
Next
Else
For i = n0 To n
BinomialList(n, k-1, Combination(), i+1, String+Chr(i+'A'-1))
Next
EndIf
EndProcedure
NewList Combination.s()
BinomialList(5, 2, Combination())
ForEach Combination()
Debug Combination()
Next
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Kombinatorik: Dienstags-Team einer Bücherei festlegen
Alle 10 Wochen wiederholt sich das zwar, aber in der 52. Woche (entspricht der 2. Woche) hat A 2 Tage mehr gearbeitet als D und E.
_____
Wie man die Teams gleichmäßig beschäftigt, kann man sich bildlich gut vorstellen.
Die 5 Frauen stellen sich im Kreis auf.
Variante 1: Immer 2 Nebeneinanderstehende arbeiten zusammen in der Reihenfolge, wie sie im Kreis stehen:
AB, CD, EA, BC, DE
Variante 2: Es wird immer einer übersprungen.
AC, BD, CE, DA, EB
Variante 1 und 2 müssen sich abwechseln, damit die Bedingungen der Aufgabe erfüllt sind.
(2 überspringen ist wie Variante 2 rückwärts, 3 überspringen ist wie Variante 1 rückwärts)
_____
Wie man die Teams gleichmäßig beschäftigt, kann man sich bildlich gut vorstellen.
Die 5 Frauen stellen sich im Kreis auf.
Variante 1: Immer 2 Nebeneinanderstehende arbeiten zusammen in der Reihenfolge, wie sie im Kreis stehen:
AB, CD, EA, BC, DE
Variante 2: Es wird immer einer übersprungen.
AC, BD, CE, DA, EB
Variante 1 und 2 müssen sich abwechseln, damit die Bedingungen der Aufgabe erfüllt sind.
(2 überspringen ist wie Variante 2 rückwärts, 3 überspringen ist wie Variante 1 rückwärts)