Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fazendo uma pesquisa na internet,eu achei um código que gera confrontos de futebol,o sistema serviria de caminho para o projeto que eu pretendo fazer de futebol,só que se tiver mais de 10 times,trava para gerar os confrontos,e acaba não gerando,saberiam me dizer o que posso estar fazendo para ajustar o script.
<?php
$times = array('Time 01','Time 02','Time 03','Time 04','Time 05','Time 06','Time 07','Time 08','Time 09','Time 10','Time 11','Time 12','Time 13','Time 14','Time 15','Time 16','Time 17','Time 18','Time 19','Time 20');
function gera_jogos($times) {
$num_times = count($times);
$jogo = array();
foreach ($times as $k => $m) {
for($i = $k+1;$i < count($times);$i++) {
$v = $times[$i];
if ($m != $v AND !in_array(array('m' => $v, 'v' => $m), $jogo)) {
$jogo[] = array('m' => $m, 'v' => $v);
}
}
}
$rodada = array();
$times_usados = array();
$jogos_usados = array();
$num_rodadas = $num_times - 1;
$num_jogos = $num_times * $num_rodadas / 2;
$num_jogos_realizados = 0;
$rodada = array();
shuffle($jogo);
for ($i = 1; $i <= $num_rodadas; $i++) {
foreach ($jogo as $c => $j) {
if (!in_array($j['v'], $times_usados) AND !in_array($j['m'], $times_usados) AND !in_array($j, $jogos_usados)) {
$rodada[$i][] = $j;
$times_usados[] = $j['v'];
$times_usados[] = $j['m'];
$jogos_usados[] = $j;
$num_jogos_realizados++;
}
}
$times_usados = array();
}
if ($num_jogos_realizados == $num_jogos) {
return $rodada;
} else {
return false;
$tentativa++;
}
}
$rodada = array();
while ($rodada == false) {
$rodada = gera_jogos($times);
$tentativa++;
}
foreach ($rodada as $c => $v) {
echo "<h2>Rodada $c</h2>";
foreach ($v as $i) {
echo $i['m'], ' x ', $i['v'], '<br />';
}
}
?>
Obrigado!
Então eu também não sei o que acontece,quando tem até 10 times,gera a lista tranquilamente,agora quando tem 18 times ou mais,a lista não gera,o sistema fica pesado.
Eu preciso que a lista gerasse tranquilamente com 10,20 ou 30 times.
Mas o que você tentou, quer que façamos o teste pra você e corrija o script é isso?
Na verdade eu queria uma ajuda para tentar descobrir o por que o script quando tem até 14 times funciona corretamente,quando se tem mais de 14 times,o script já não funciona,até dar erro por tempo de espera.
Por que eu já fiz algumas mudança no script para ver se conseguia resolver o problema,mais continua a mesma coisa.
Mas velho pegar script da net da nisso, isso ae se voce estudar array, resolve com duas a tres linhas, depois so usar um for para percorrer
Oks,obrigado pela ajuda!
Segue Boy, como eu disse em poucas linhas, agora estude as funções!
$times = array('Time 01','Time 02','Time 03','Time 04','Time 05','Time 06','Time 07','Time 08','Time 09','Time 10','Time 11','Time 12','Time 13','Time 14','Time 15','Time 16','Time 17','Time 18','Time 19','Time 20');
function gera_jogos($times) {
shuffle($times);
return call_user_func_array('array_combine', array_chunk($times, sizeof($times) / 2));
}
for ($i = 0; $i < count($times); $i += 1) {
echo "<pre>";
print_r(gera_jogos($times));
}
Veja o Ideone
http://php.net/
http://google.com.br/