phillip: Jeder gegen Jeden

Hallo!

ich bin dabei eine liga in php zu programmieren. zur zeit ist mir jedoch ein kleines hinderniss im weg ;-)
also vereinfacht ausgedrückt: angenommen ich habe 5 zahlen 1,2,3,4,5 und ich möchte in zufälliger reihenfolge pärchen bilden, sodass "jeder gegen jeden" spielt.
also:

1:2
1:3
1:4
1:5
2:1
2:3
2:4
2:5
3:1
3:2
3:4
3:5
4:1
4:2
4:3
4:5
5:1
5:2
5:3
5:4
(und die eben noch in ihrer reihenfolge gemischt).
hat da jemand eine idee wie das gehen könnte? ich wäre euch sehr dankbar!!!

phillip

  1. Hi,

    also vereinfacht ausgedrückt: angenommen ich habe 5 zahlen 1,2,3,4,5 und ich möchte in zufälliger reihenfolge pärchen bilden, sodass "jeder gegen jeden" spielt.

    fülle die Paarungen in ein Array (zwei for-Schleifen reichen, dafür dürfte sich eine Rekursion kaum lohnen) und sortiere dieses nach Zufall.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    mit 2 inkrementierenden Schleifen?

    for (zahl1=1;zahl1<irgendwas;++zahl1)
        for (zahl2=1;zahl2<irgendwas;++zahl21) print zahl1.':'.zahl2

    (ps. ich schätze, dass das kein PHP ist, was ich da hingeschrieben habe :]
    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Reklame ist die Kunst, auf den Kopf zu zielen und die Brieftasche zu treffen.
  3. Erstmal ein Hinweis aus der Mathematik:
      es wird Binomialkoeffizient n über 2 Spiele geben, oder vereinfacht, (n*n-n)/2, wobei n die Anzahl der Teams sind.

    Es gibt bestimmt eine Methode, jeder Zahl zwischen 1 und (n 2) ein Spiel zuzuordnen, aber ich halte es für einfacher, einen Array zu erstellen mit

    comb = Array();

    for (i = 1; i < (n*n-n)/2; i++)
      for ( j = 0; j < i; j++)
        comb[] = Array (i,j);

    und dann mit

    shuffle (comb);

    mischen.

    Gruß,
    Mathias