"Jeder gegen Jeden" - Spielplan ??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    der bereich ist zwar seit einer woche tod, aber ich nicht, hab noch immer nicht mehr als die lösung die ich hier schon gepostet habe - bin gespannt was du herausfindest !!!

    Kommentar


    • #17
      Hier der erste grobe entwurf

      OK also beleben wir dieses Thema mal wieder

      Hier ist die Lösung zu Problem 1

      flexibles jeder gegen jeden
      Hier mit 7 Spielern getestet


      Ups noch ein kleiner fehler drin gewesen . .

      poste es gleich noch mal

      Mache mich an die Arbeit sie Zeitfreundlich zu sortieren . .. hab auch schon konkrete Ideen dazu . . .
      Zuletzt geändert von Andre522; 30.04.2004, 14:12.
      Bis denne . . . . .

      Andre522

      Kommentar


      • #18
        Soooo jetzt aber

        Das sollte es dann sein . . . . .

        PHP-Code:
        <html>
         <body bgcolor="#dfdfdf">
          <center>
           <table border=1>
            <tr>
             <td align=center><b>Name</b></td>
             <td align=center>&nbsp;</td>
             <td align=center><b>Name</b></td>
            </tr>
        <?php

        $namen 
        = array('Andre''Thilo''Klaudija''Rolf''Peter''Claus''Julia');
        $anz_spieler count($namen);

        $spiele_pro_spieler $anz_spieler 1;

        $end $spiele_pro_spieler;

        $i 0;
        $anz 0;

        for(
        $k=0;$k<=$anz_spieler;$k++)
        {
         for(
        $j=$i+1;$j<=$end;$j++)
         {
          echo 
        "<tr><td align=center>".$namen[$i]."</td><td align=center> vs. </td><td align=center>".$namen[$j]."</td></tr>";
          
        $anz++;
         }
        $i++;
        }

        ?>
           </table>
        Bei <? echo $anz_spieler; ?> Spielern ergeben sich <? echo $anz; ?> Spiele, das sind <? echo $spiele_pro_spieler; ?> Spiele pro Person.


          </center>
         </body>
        </html>
        Nun zum 2. Teil
        Bis denne . . . . .

        Andre522

        Kommentar


        • #19
          schaut gut aus!! ich denke das zeitorientierte sortieren ist der schwierigste schritt an der ganzen sache - bin schon sehr gespannt

          Kommentar


          • #20
            @pvp:

            Wenn du da mal was Fertiges hast, kannst du mir dann bitte mailen.
            [ed.oramram@lzn] << rückwärts lesen! (nur zur Sicherheit)

            Rem "man muss das rad nicht 2x erfinden";
            [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

            [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

            [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
            (from here)

            Kommentar


            • #21
              Ich hab da noch was auf meinem Rechner gefunden:

              Und zwar bin ich auch schon mal vor demgleichen Prob gesessen.
              Allerdings wollte ich es in Delphi realisieren.

              Vielleicht (glaub's zwar nicht, aber man weiß ja nie) hilft dir/euch mein Code von damals.
              - Ist nicht fertig
              - ist kaum kommentiert (war mehr ein Versuch)
              - ist im Rohbau!

              Funktion:
              Das Prog "errechnet" die optimale Anordnung der Spiele.
              (optimal = möglichst wenige Doppelspiel)

              Ich habs nur mit 4 Teams realisiert (Da es nur ein test war auch nicht dynamisch)
              Hab dann rel. schnell rausgefunde, dass es bei 4 Teams recht witzlos ist :-l


              Wie auch immer

              [Anbei der Code]
              Jo dann wird's wohl Open-Source :-D
              Angehängte Dateien
              [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

              [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

              [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
              (from here)

              Kommentar


              • #22
                Jo jetzt geht es weiter

                Hi Leutz

                wollt euch nur sagen das ich das Problem nicht vergessen habe . ..

                Werde mich jetzt am WE mal daran machen das Ding zu vervollständigen . . .

                Denke mal das ich euch am Montag ne fertige und getestete Version hier bieten kann

                bis dahin . . . .
                Bis denne . . . . .

                Andre522

                Kommentar


                • #23
                  ich bin auch noch dran, aber eher passiv beim mitlesen dieses threads, meine technischen kenntnisse sind ausgeschöpft, bin gespannt !!!

                  Kommentar


                  • #24
                    Das Thema ist schon etwas älter, aber da ich auf meiner Suche hierauf gestoßen bin und keine zufriedenstellende Antwort finden konnte, habe ich mir nun selbst eine Lösung gebaut. Diese möchte ich gerne teilen, falls es mehreren so geht wie mir.

                    Die folgende Funktion kann mit einem beliebig langen Array von Teilnehmern aufgerufen werden und liefert eine möglichst gleichmäßig verteilte Jeder-Gegen-Jeden Tabelle zurück.

                    Beispiel:
                    PHP-Code:
                    $spieler=array("SpielerA""SpielerB""SpielerC""SpielerD""SpielerE");
                    $spiele=buildTurnier($spieler);
                    foreach(
                    $spiele as $i => $spiel){
                      echo (
                    $i+1).". ".$spiel[0]." gegen ".$spiel[1]."<br>";
                    }
                    ​ 
                    Die Ausgabe lässt sich natürlich z.B. mit einer HTML-Tabelle schöner gestalten, aber es soll sich ja nur um ein simples Beispiel handeln. Die Funktion lässt sich statt mit reinen Spielernamen zum Beispiel auch mit einem Array von IDs verwenden, sodass man sie zur weiteren Verwendung in eine Datenbank schreiben kann. Es kann sich ebenfalls um Objekte oder Arrays handeln. Der Typ der Elemente im Teilnehmer-Array ist egal.
                    Bei einem Gruppen-Turnier kann die Funktion für jede Gruppe einmal aufgerufen werden um die einzelnen Gruppenspiele zu generieren. Hier müsste man ggf. noch die Gruppen-Spiele entsprechend ineinander mischen um gleichmäßig lange Pausen zu erhalten statt die Gruppen nacheinander durch zu spielen.

                    Notizen zur technischen Umsetzung:
                    Es gibt eine "Schlange" in welcher alle Spieler eingetragen werden.
                    Es wird immer der erste Spieler aus der Schlange als Spieler1 für das nächste Spiel verwedet. Dieser wird aus der Schlange entfernt und hinten wieder angehängt.
                    Als zweiter Spieler wird derjenige ausgewählt, der am weitesten vorn in der Schlange steht (also am längsten kein Spiel hatte) und bisher noch kein Spiel gegen Spieler1 hatte. Dieser wird ebenfalls aus der Schlange entfernt und hinten wieder angehängt.
                    Somit sollten möglichst gleichmäßige Pausen zwischen den Spielen ermittelt werden.

                    PHP-Code:
                    function buildTurnier($r){
                        
                    $r=array_values($r);//index 0...n erzwingen
                        
                    $playerNr=count($r);
                        
                    $games = array();
                        
                    $spieleGesamt=($playerNr*$playerNr-$playerNr)/2;
                        
                    $allGames=array();
                        
                    //eine liste aller begegnungen pro spieler erstellen
                        
                    for($i=0;$i<$playerNr;$i++){
                            
                    $allGames[$i]=array();
                            for(
                    $j=0;$j<$playerNr;$j++){
                            
                    //jeder gegen jeden, aber nicht gegen sich selbst
                                
                    if($i!=$j)$allGames[$i][]=$j;
                            }
                        }
                        
                    $schlange=array_keys($r);
                        for(
                    $i=0;$i<$spieleGesamt;$i++){
                            
                    $spieler1=array_shift($schlange);//wer hat am laengsten nicht gespielt?
                            
                    $schlange[]=$spieler1;//spieler wieder an die schlange anhaengen
                            
                    $index=-1;
                            foreach(
                    $schlange as $spieler2){//alle Spieler in der Schlange durchgehen
                                
                    if(($index=array_search($spieler2$allGames[$spieler1])) !== false){
                                    
                    //schleife verlassen und $index von spieler2 in den spieler1 games behalten
                                    
                    break;
                                }
                            }
                            unset(
                    $allGames[$spieler1][$index]);//spieler2 aus der liste der spiele von spieler1 loeschen
                            
                    $index=array_search($spieler1$allGames[$spieler2]);
                            unset(
                    $allGames[$spieler2][$index]);//.. und umgekehrt

                            
                    $spieler2SchlangeIndex=array_search($spieler2$schlange);
                            unset(
                    $schlange[$spieler2SchlangeIndex]);//spieler2 aus schlange loeschen
                            
                    $schlange[]=$spieler2;//.. und hinten wieder anhaengen

                            
                    $games[]=[$r[$spieler1], $r[$spieler2]];
                        }

                        return 
                    $games;
                    }
                    ​ 
                    Zuletzt geändert von DGzeule; 22.11.2022, 22:18. Grund: kleiner bugfix

                    Kommentar

                    Lädt...
                    X