Turnierspiel Kombinationen

    • Offizieller Beitrag

    Ich schreibe gerade an einem Programm zum verwalten eines Turniers.

    Jetzt brauche ich eine Funktion, um die Spiele "anzusagen". Nehmen wir mal an, es sind 8 Spieler innerhalb einer Gruppe. Jeder soll einmal gegen jeden aus dieser Gruppe spielen.

    Es soll aber so sein, dass reihum alle dran kommen und nicht ein Spieler mehrere Spiele hintereinander macht. Und genau da komme ich nicht weiter.

    Die erste und die zweite "Runde" klappt ja noch, aber wie geht's weiter?

    Oder kann man das nicht berechnen und muss die Reihenfolge manuell festlegen?

    Hier mal ein Testscript:

  • Ich habs mal grafisch dargestellt. Da gibt es natürlich irgendwelche Muster, aber ich wüsste nicht wie man die sinnvoll in Formeln fassen kann. (Es kann auch sein, dass ich da völligen Unfug gefärbt habe^^)

    Edit: Folgende Regeln wurden berücksichtigt:

    - In jeder Runde muss jeder Spieler 1x drankommen

    - Kein Spieler darf 2x hintereinander drankommen

    Edit2: Die zahlen in der letzten Reihe ignorieren, die waren für mich zur Orientierung und ich habe sie ausversehen mit drin.

    Edit3: Es gibt wahrscheinlich unglaublich viele Kombinationsmöglichkeiten die die oben genannten Regeln erfüllen. Ggf ist eine davon durch einfache Formeln fassbar...

    lg

    M

    • Offizieller Beitrag

    Ich habe mir jetzt etwas programmiert, was nicht ganz perfekt ist (es gibt ein paar Spiele, wo ein Spieler 2x hintereinander drankommt), aber was zumindest ungefähr hinkommt.

    Falls noch jemanden eine bessere "Formel" einfällt, dann nur zu. Ich bin für jeden Vorschlag zu haben (wenn er sich in AutoIt umsetzen lässt).

    Ich hatte oben noch vergessen dazuzuschreiben, dass die Berechnung für unterschiedliche Anzahlen an Spieler funktionieren muss. Es sind aber min. 4, max. 12 und die Anzahl kann gerade oder ungerade sein.

  • Da ich ein Freund des Zufalls bin habe ich was gebastelt:

    Es werden einfach zufällige Matchups genommen und nachträglich geschaut ob die Regeln eingehalten wurden.

    + Das Ergebnis müsste eine Matchupliste sein die die Anforderungen erfüllt

    + Ungerade Spielerzahlen

    - Es wird OHNE "Runden" gearbeitet, damit auch ungerade Spielerzahlen klargehen.

    - Milliardenfach mehr Rechenaufwand als wenn man die Zauberformel finden würde.

    - (Aktuell) Die Abstände sind schlecht verteilt (also ein Spieler kommt z.B. in 8 Spielen 3x oder 4x dran und danach 10 Spiele garnicht)

    M

    • Offizieller Beitrag

    Dein Script ist aber nicht korrekt. Erstmal können es gar keine 36 Spiele sein, denn wenn jeder einmal gegen jeden spielt, dann sind es maximal 28 Spiele (bei 8 Spielern): 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28

    Und bei Dir treten einige Partien doppelt und dreifach auf:

    Aber die Idee mit dem Zufall habe ich mal aufgegriffen und das in mein Script mit eingebaut:

    Damit ist die Verteilung schon nahe am Optimum. Es passiert zwar manchmal noch, dass ein Spieler 2x hintereinander dran kommt, aber das ist sehr selten.