Lets get started: Ich habe einen 2-dimensionalen array und lasse ihn mit usort nach den pts(desc) sortieren;
ist die Anzahl der teams ungerade wird ein Freilos hinzugefügt. Ziel ist es einen Auslosungsalgorithmus zu schaffen,
der halt aus dem array paarungen macht, aber mit der Bedingung, dass kein Spiel doppelt vorkommt und immer teams mit möglichst gleicher punktzahl gegeneinander spielen. Irgendwie verpeile ich es andauernd nen richtigen algorithmus hinzukriegen oder bin einfach zu dumm dazu, deswegen will ich mal die schlauen Köpfe dieses Forums befragen
[Die Begegnungen sollen dann halt wieder in einem array gespeichert werden]
code:
ist die Anzahl der teams ungerade wird ein Freilos hinzugefügt. Ziel ist es einen Auslosungsalgorithmus zu schaffen,
der halt aus dem array paarungen macht, aber mit der Bedingung, dass kein Spiel doppelt vorkommt und immer teams mit möglichst gleicher punktzahl gegeneinander spielen. Irgendwie verpeile ich es andauernd nen richtigen algorithmus hinzukriegen oder bin einfach zu dumm dazu, deswegen will ich mal die schlauen Köpfe dieses Forums befragen
[Die Begegnungen sollen dann halt wieder in einem array gespeichert werden]
code:
PHP-Code:
$sort = array('-pts');
function colcmp($a, $b)
{
global $sort;
for ($k=0; $k<count($sort); $k++)
{
$col = $sort[$k];
if (substr($col, 0, 1)=='-')
{
0 $m = -1;
$col = substr($col, 1);
}
else
$m = 1;
if ($a[$col] > $b[$col])
return $m;
elseif ($a[$col] < $b[$col])
return -$m;
}
return 0;
}
$res[0] = array("t_name" => "#mtw", "t_id" => "1", "pts" => "12");
$res[1] = array("t_name" => "#mouz", "t_id" => "2", "pts" => "14");
$res[2] = array("t_name" => "#sk", "t_id" => "3", "pts" => "6");
$res[3] = array("t_name" => "#tamm", "t_id" => "4", "pts" => "18");
$res[4] = array("t_name" => "#fairlight", "t_id" => "5", "pts" => "4");
$res[5] = array("t_name" => "#ernie", "t_id" => "6", "pts" => "11");
$res[6] = array("t_name" => "#bert", "t_id" => "7", "pts" => "1");
$res[7] = array("t_name" => "#lala", "t_id" => "8", "pts" => "3");
$res[8] = array("t_name" => "#moep", "t_id" => "9", "pts" => "7");
usort($res, "colcmp");
if(!is_int(count($res) / 2))
{
$res[count($res)] = array("t_name" => "#Freilos", "t_id" => "999999", "pts" => rand(1, $res[0][pts] + 1));
}
usort($res, 'colcmp');
Kommentar