Ich versuche mir in VBA ein Programm zu schreiben dass mir eine Liste mit einer Tischzuweisung einzelner Spieler macht, aber ich habe leider absolut keine Idee auf welche Weise ich das Problem angehen soll.
Die Situation ist folgende:
Bei einem Turnier spielen pro Runde an jedem Tisch 4 Spieler gegeneinander. Es wird über mehrere Runden gespielt und nach jeder Runde wird die Zusammensetzung an den Tischen geändert. Ich will jetzt bei Excel eingeben wieviele Spieler und wieviele Runden gespielt werden und er soll mir dann als Ausgabe schreiben in welcher Runde an welchem Tisch wer gegen wen spielt. Die Randbedingung dafür ist dass nie die gleichen Spieler gegeneinander antreten sollen. Als Beispiel:
Runde 1:
Tisch A: Spieler 1, Spieler 2, Spieler 3, Spieler 4
Tisch B: Spieler 5, Spieler 6, Spieler 7, Spieler 8
...
Runde 2:
Tisch A: Spieler 1, Spieler 5, Spieler 8, Spieler 10
...
Bei Runde 2 wäre Tisch A nicht möglich. Zwar haben weder Spieler 1 noch Spieler 10 gegeneinander bzw gegen Spieler 5 oder 8 gespielt bisher aber Spieler 5 hat bereits in der 1. Runde gegen Spieler 8 gespielt weshalb dies eine Doppelbelegung wäre die vermieden werden sollte.
Natürlich kann die Anzahl der Runden nicht unbegrenzt hoch angesetzt werden. Beispielsweise ist bei 16 Spielern ein Maximum von 5 Runden möglich danach hat jeder gegen jeden gespielt.
Das Problem hierbei ist dass man mehrere Verknüpfungen untereinander hat, und wenn man in den ersten Runden schlechte Zusammenstellungen macht sich eine mögliche Lösung verbaut. Es kann also nicht einfach irgendwie gemacht werden sondern man braucht eine passende Strategie.
Hat jemand eine Idee wie man das Problem am Besten angeht?
mfg
realCool