Paarungsgenerator in PHP
Der Paarungsgenerator generiert dabei Paarungen entsprechend den Vorgaben der Weltschachorganisation FIDE. Online solche Paarungstabellen generieren lassen, kann man sich z.B. hier.
Und hier nun die entsprechende PHP-Funktion:
/***********************
* liefert die Paarungen nach Standardsystem
* @param dim: Spieleranzahl
* @param runde: aktuelle Runde
*/
protected function Standardsystem($dim, $runde)
{
// Spieleranzahl begradigen
if($dim % 2 != 0)
{
$dim++;
$spielfrei = $dim;
}
else $spielfrei = false;
$gegner = range(1, $dim);
if($runde % 2){
$gegner[0] = $odd = ($runde+1)/2;
$gegner[1] = $dim;
}
else{
$gegner[0] = $dim;
$gegner[1] = $odd = ($runde+$dim)/2;
}
for ($i=2; $i< $dim;){
$gegner[$i++]= ($odd++)%($dim-1)+1;
$gegner[$i++]= ($runde-$odd+$dim-1)%($dim-1)+1;
}
$i = 0;
for($x = 0; $x < $dim-1; $x+=2)
{
if($spielfrei && ($gegner[$x] == $dim || $gegner[$x+1] == $dim))
{
// Spielfrei erwischt
}
else
{
$paarung[$i]['w'] = $gegner[$x];
$paarung[$i]['s'] = $gegner[$x+1];
$i++;
}
}
return $paarung;
}
Die damit ermittelten Paarungen können natürlich auch für jede andere Sportart verwendet werden. Mitunter tauschen die Veranstalter allerdings auch Runden gegeneinander aus. Im Prinzip sollte dies aber bereits durch eine entsprechend intelligente Vergabe der Startnummern geschehen, um einen Rundentausch zu vermeiden.
Datum: | Autor: Frank Hoppe
Kommentare
Einen Kommentar schreiben