Problem to generate clash table

0

I am in a project, whose I need to generate a table of a football championship, where everyone plays against everyone, but when I generate up to 4 teams, the wheels are generated perfectly, when I generate 10 teams for example, give wheel trouble.

Ideone script link .

$times = array('Time1','Time2','Time3','Time4','Time5','Time6','Time7','Time8','Time9','Time10'); //Array de Times
$qtde_times = count($times); // Quantidade de Times
$num_rodadas = $qtde_times - 1; //numero de rodadas
$times_por_rodada = 2 * (int) ($qtde_times / 2);
$casa = array(); //guarda os jogos de quem joga em casa
$fora = array(); // guarda os jogos de quem joga fora
$jogos = array(); // guarda os jogos no final
$jogos_temp = array(); //array temporário, verifica quem já jogou em cada rodada
for ($i = 0; $i < $qtde_times; $i++) { //For para caminhar entre os times
    for ($j = $i; $j < $qtde_times; $j++) { //For para caminha entre os adversários
        if ($times[$i] != $times[$j]) { //verifica pra não deixar jogar um time contra ele mesmo
            if ($j % 2 == 0) { //if pra ver quem joga em casa ou fora
                $casa[] = $times[$i];
                $fora[] = $times[$j];
            } else {
                $casa[] = $times[$j];
                $fora[] = $times[$i];
            }//fim do if / else de jogar em casa ou fora
        }// verifica se é diferente pra poder fazer o confronto
    }// fim do for que caminha entre os adversários
}// fim do for que verifica os times

//parte que verifica quem já jogou em qual rodada
for ($rodada = 0; $rodada < $num_rodadas; $rodada++) {
    for ($t = 0; $t < count($casa); $t++) {
        if (($casa[$t] != "") and ((in_array($casa[$t], $jogos_temp)) == false) and (((in_array($fora[$t], $jogos_temp)) == false))) {
            $jogos_temp[] = $casa[$t];
            $jogos_temp[] = $fora[$t];
            $casa[$t] = "";
            $fora[$t] = "";
        }
    }
    $jogos["Rodada: " . ($rodada + 1)] = $jogos_temp;
    $jogos_temp = array();
}

for ($rod = 0; $rod < $num_rodadas; $rod++) {
    echo "Rodada: " . ($rod + 1) . "<br />";
    for ($jog = 0; $jog < $times_por_rodada; $jog+=2) {
        echo $jogos["Rodada: " . ($rod + 1)][$jog] . " x " . $jogos["Rodada: " . ($rod + 1)][($jog + 1)] . "<br />";
    }
    echo "<br />";
}

Could anyone tell me what I can be doing to resolve this?

    
asked by anonymous 29.09.2016 / 20:05

0 answers