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 !!!
"Jeder gegen Jeden" - Spielplan ??
Einklappen
X
-
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
-
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> </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>Bis denne . . . . .
Andre522
Kommentar
-
@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
-
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 :-DAngehä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
-
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
-
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>";
}
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;
}
- Likes 1
Kommentar
Kommentar