Hulkstar 1 Denunciar post Postado Setembro 26, 2016 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! Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 26, 2016 saberiam me dizer o que posso estar fazendo para ajustar o script. http://php.net/ http://google.com.br/ Compartilhar este post Link para o post Compartilhar em outros sites
Hulkstar 1 Denunciar post Postado Setembro 26, 2016 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. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 26, 2016 Mas o que você tentou, quer que façamos o teste pra você e corrija o script é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Hulkstar 1 Denunciar post Postado Setembro 26, 2016 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. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 26, 2016 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 Compartilhar este post Link para o post Compartilhar em outros sites
Hulkstar 1 Denunciar post Postado Setembro 26, 2016 Oks,obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 26, 2016 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 Ideonehttp://ideone.com/LIiIlV Compartilhar este post Link para o post Compartilhar em outros sites