<?php
/*
$resCompetitors = mysql_query("SELECT
competitor_id
FROM
" . $table_prefix . "competitors
ORDER BY RAND()");
$arrCompetitors = array();
while ($row = mysql_fetch_row($resCompetitors)) {
$arrCompetitors[] = $row[0];
}
*/
$arrCompetitors = array(1,2,3,4,5,6,7,8,9);
if (count($arrCompetitors) % 2 != 0) {
//maak een fake deelnemer
$arrCompetitors[] = 0;
}
$n = count($arrCompetitors); //aantal ronden
$rounds = $n - 1;
$shedule = array();
for ($r = 1; $r <= $rounds; $r++) {
for ($i = 1; $i <= $n / 2; $i++) {
if ($i == 1) $shedule[$r] = array();
$homeindex = ($i==1)? 1 : (($r+$i-2) % ($n-1) +2);
$awayindex = ($n - 1 + $r - $i) % ($n -1) +2 ;
if ($r % 2 == 0) {
$swap = $homeindex;
$homeindex = $awayindex;
$awayindex = $swap;
}
if ($arrCompetitors[$homeindex-1] != 0 && $arrCompetitors[$awayindex-1] != 0) {
$shedule[$r][] = $arrCompetitors[$homeindex-1] . ' - ' . $arrCompetitors[$awayindex-1];
}
}
}
?>
Resultaat:
Ronde 1 Ronde 2 Ronde 3 Ronde 4 Ronde 5 Ronde 6 Ronde 7 Ronde 8 Ronde 9
1 - 2 3 - 1 1 - 4 5 - 1 1 - 6 7 - 1 1 - 8 9 - 1 2 - 9
4 - 9 2 - 4 5 - 3 4 - 6 7 - 5 6 - 8 9 - 7 7 - 2 3 - 8
5 - 8 9 - 6 6 - 2 3 - 7 8 - 4 5 - 9 2 - 5 6 - 3 4 - 7
6 - 7 8 - 7 8 - 9 2 - 8 9 - 3 3 - 2 3 - 4 5 - 4 5 - 6
Op zich een vrij redelijk resultaat (in ieder geval kloppend), maar bv deelnemer 5 speelt 2x twee thuiswedstrijden achter elkaar, dus ik vroeg me af of er misschien een betere methode is dan deze.