Hussay 0 Denunciar post Postado Setembro 25, 2012 Pessoal, Consegui fazer somente no braço da seguinte forma: Pequei 16 times, sendo que cada time é um número de 1 a 16. realizei na raça fazendo todo mundo jogar com todo mundo em um turno. 1ª rodada 1 x 5 10 x 8 13 x 9 14 x 4 2 x 12 3 x 15 6 x 16 7 x 11 2ª rodada 16 x 2 11 x 3 13 x 5 15 x 7 9 x 1 4 x 10 6 x 12 8 x 14 3ª rodada 12 x 3 1 x 4 15 x 6 16 x 7 2 x 11 5 x 10 8 x 13 9 x 14 4ª rodada 3 x 10 11 x 4 9 x 16 12 x 5 2 x 1 7 x 14 8 x 15 6 x 13 5ª rodada 15 x 5 1 x 7 10 x 6 11 x 9 8 x 12 2 x 14 13 x 3 4 x 16 6ª rodada 10 x 11 12 x 13 14 x 16 2 x 6 3 x 9 4 x 8 15 x 1 5 x 7 7ª rodada 5 x 2 1 x 12 8 x 3 10 x 15 9 x 6 4 x 7 16 x 13 14 x 11 8ª rodada 9 x 4 6 x 3 7 x 2 5 x 8 16 x 12 15 x 11 14 x 10 13 x 1 9ª rodada 2 x 9 13 x 10 3 x 4 16 x 11 1 x 14 5 x 6 12 x 15 7 x 8 10ª rodada 14 x 5 7 x 12 13 x 2 16 x 3 15 x 4 6 x 1 8 x 11 9 x 10 11ª rodada 1 x 16 11 x 13 10 x 12 3 x 7 6 x 4 14 x 15 8 x 2 9 x 5 12ª rodada 15 x 13 11 x 1 10 x 16 7 x 9 4 x 2 3 x 5 6 x 8 12 x 14 13ª rodada 2 x 15 12 x 9 1 x 8 7 x 10 4 x 13 11 x 6 14 x 3 5 x 16 14ª rodada 10 x 2 3 x 1 5 x 11 12 x 4 7 x 13 14 x 6 16 x 8 15 x 9 15ª rodada 8 x 9 6 x 7 4 x 5 2 x 3 15 x 16 13 x 14 11 x 12 1 x 10 Depois fiz uma tabela mysql chamada times16 e fiz o upload desses jogos CREATE TABLE IF NOT EXISTS `times16` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time1` int(11) NOT NULL, `time2` int(11) NOT NULL, PRIMARY KEY (`id`) ) Depois vou lançar no meu código php a condição de ser contado quantos times existem na tabela mysql jogadores no mês e fazer a lógica já inserida no banco de dados: segue o código abaixo: <?php $mes = $_POST['mes']; $super = $_POST['supervisor']; /* Conte os times de acordo com o mês e o gestor*/ $times = mysql_query("SELECT * FROM jogadores WHERE mes='$mes' and supervisor='$super'"); $conta_times = mysql_num_rows($times); if($conta_times == 16){ $busca_combinacao = mysql_query("SELECT * FROM times16"); while($linha_combinacao = mysql_fetch_array($busca_combinacao)){ $A = $linha_combinacao['time1']; $B = $linha_combinacao['time2']; $busca_time1 = mysql_query("SELECT * FROM jogadores WHERE mes='$mes' and supervisor='$super' and numero='$A'"); while($linha_busca_time = mysql_fetch_array($busca_time1)){ $time1 = $linha_busca_time['nome']; } $busca_time2 = mysql_query("SELECT * FROM jogadores WHERE mes='$mes' and supervisor='$super' and numero='$B'"); while($linha_busca_time2 = mysql_fetch_array($busca_time2)){ $time2 = $linha_busca_time2['nome']; } $insere_jogos = mysql_query("INSERT INTO jogos (mes, pontos1, time1, placar1, placar2, time2, pontos2, supervisor) values ('$mes', '0', '$time1', '0', '0', '$time2', '0', '$super')"); } } echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=campeonato_otimizacao.php?escolha=3'> <script type=\"text/javascript\"> alert(\"Jogos inseridos com sucesso. \"); </script>"; ?> Depois de inserido, agora realizo um nova página para separar direitinho por rodada: <? /*Decide quantas rodadas*/ $rodadas1 = mysql_query("SELECT nome FROM jogadores WHERE mes='$mes'"); $cont_rodadas1 = mysql_num_rows($rodadas1);/*Conta jogadores*/ $rodadas = $cont_rodadas1 - 1;/*Conta rodadas*/ $jogos = mysql_query("SELECT id FROM jogos WHERE mes='$mes'"); $cont_jogos = mysql_num_rows($jogos);/*Conta quantos jogos*/ $times_por_rodada = $cont_jogos / $rodadas;/*Conta quantos times por rodada*/ $loop_rodadas = 0; $inicio = 0; $jogo_primeiro = mysql_query("SELECT * FROM jogos WHERE mes='$mes' LIMIT 0,1");/*Primeiro id*/ while($linha_jogo_primeiro = mysql_fetch_array($jogo_primeiro)){ $id_inicio = $linha_jogo_primeiro['id']; } while($loop_rodadas < $rodadas){ $loop_rodadas++; /*Fim Decide quantas rodadas (loop em toda tabela*/ ?> <table width="700px" border="1" cellspacing="0" cellpadding="0" align="center"> <tr> <td height="32" colspan="7" valign="middle"><center><A NAME="<? echo $loop_rodadas;?>rodada" style="font-size:16px; color:#00F; text-decoration:underline "><? echo $loop_rodadas; ?>ª Rodada</a></center><span style="text-align:right"><a href="#topo" style="color:#F00; text-decoration:overline underline">Voltar ao Topo</a></span></td> </tr> <tr> <td width="60" align="center">Dia</td> <td width="223" align="center">TIME1</td> <td width="39" align="center"> </td> <td width="21" align="center">X</td> <td width="20" align="center"> </td> <td width="323" align="center">TIME2</td> <td width="60" align="center">Dia</td> </tr> <? $jogos = mysql_query("SELECT * FROM jogos WHERE mes='$mes' and id>='$id_inicio' LIMIT 0,$times_por_rodada"); while($linha_jogos = mysql_fetch_array($jogos)){ $time1 = $linha_jogos['time1']; $placar1 = $linha_jogos['placar1']; $placar2 = $linha_jogos['placar2']; $time2 = $linha_jogos['time2']; $id = $linha_jogos['id']; $dia = $linha_jogos['dia']; $dia2 = $linha_jogos['dia2']; $mes_certo = $linha_jogos['mes']; $busca_registro = mysql_query("SELECT * FROM adm WHERE nome LIKE '$time1%'"); while($linha_registro = mysql_fetch_array($busca_registro)){ $registro1 = $linha_registro['login']; } $confere_gols = mysql_query("SELECT COUNT(status) as contagem FROM otimizacao_completa WHERE login='$registro1' and status='ACEITOU' and dia='$dia' and mes='$mes_certo'"); while($linha_confere = mysql_fetch_array($confere_gols)){ $gols_reais1 = $linha_confere['contagem']; } $busca_registro2 = mysql_query("SELECT * FROM adm WHERE nome LIKE '$time2%'"); while($linha_registro2 = mysql_fetch_array($busca_registro2)){ $registro2 = $linha_registro2['login']; } $confere_gols2 = mysql_query("SELECT COUNT(status) as contagem FROM otimizacao_completa WHERE login='$registro2' and status='ACEITOU' and dia='$dia2' and mes='$mes_certo'"); while($linha_confere2 = mysql_fetch_array($confere_gols2)){ $gols_reais2 = $linha_confere2['contagem']; } $dia_atual = date('d'); ?> <tr> <td height="28" align="center" <? if(($dia == $dia_atual) or ($dia2 == $dia_atual)){ ?> bgcolor="#CCFFCC" <? }?>><? echo $dia."/".$mes;?> </td> <td height="28" align="center" <? if($placar1 > $placar2){ ?> bgcolor="#00CCFF" <? } ?><? if($placar1 == $placar2){ ?> bgcolor="#FF9933" <? } ?>><? echo $time1;?> </td> <td align="center" width="50px"> <? echo $placar1; ?></td> <td align="center">X</td> <td align="center" width="50px"><? echo $placar2; ?> </td> <td align="center" <? if($placar1 < $placar2){ ?> bgcolor="#00CCFF" <? } ?><? if($placar1 == $placar2){ ?> bgcolor="#FF9933" <? } ?>> <? echo $time2; ?> </td> <td height="28" align="center" <? if(($dia == $dia_atual) or ($dia2 == $dia_atual)){ ?> bgcolor="#CCFFCC" <? }?>><? echo $dia2."/".$mes;?></td> </tr> <tr> <td height="29" colspan="2" align="center" <? if(($dia == $dia_atual) or ($dia2 == $dia_atual)){ ?> bgcolor="#CCFFCC" <? }?>> </td> <td colspan="3" align="center" <? if(($dia == $dia_atual) or ($dia2 == $dia_atual)){ ?> bgcolor="#CCFFCC" <? }?>> </td> <td align="center" colspan="2" <? if(($dia == $dia_atual) or ($dia2 == $dia_atual)){ ?> bgcolor="#CCFFCC" <? }?>> </td> </tr> <? } ?> </table> <? $id_inicio = $id_inicio + $times_por_rodada; }?> Agora vou fazer outras tabelas na raça ( com 14 times até 26 times) e depois vou fazer esse mesmo procedimento, sendo que na hora de exibir os jogos o raciocínio não precisará ser mudado. Espero que vocês tenham entendido a lógica! Qualquer dúvida, estou a disposição no facebook: http://www.facebook.com/hussay.diniz Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 28, 2012 Este é o tipo de problema que deixa nerds que nem eu maluco. Vendo NFL ontem na TV uma solução me ocorreu Vamos supor 4 times para simplificar A B C D Monta-se uma matriz A B C D ---+---+---+---+---+ A | | | | | ---+---+---+---+---+ B | | | | | ---+---+---+---+---+ C | | | | | ---+---+---+---+---+ D | | | | | Elimina-se o auto confronto A B C D ---+---+---+---+---+ A | - | | | | ---+---+---+---+---+ B | | - | | | ---+---+---+---+---+ C | | | - | | ---+---+---+---+---+ D | | | | - | Escolhe um time de forma alatoria, D por exemplo e o adversário A por exemplo, estes recebem as rodados 1 e 4 pois temos (n-1)*2 de rodadas A B C D ---+---+---+---+---+ A | - | | | 4 | ---+---+---+---+---+ B | | - | | | ---+---+---+---+---+ C | | | - | | ---+---+---+---+---+ D | 1 | | | - | Sobra na 1 e 4 rodados B e C , mas com mais times o passo acima seria recursivo, entre B e C, escolhemos D como 1º mandante A B C D ---+---+---+---+---+ A | - | | | 4 | ---+---+---+---+---+ B | | - | 1 | | ---+---+---+---+---+ C | | 4 | - | | ---+---+---+---+---+ D | 1 | | | - | Os passos seriam repetidos e teriamos algo como A B C D ---+---+---+---+---+ A | - | 3 | 2 | 4 | ---+---+---+---+---+ B | 6 | - | 1 | 2 | ---+---+---+---+---+ C | 5 | 4 | - | 6 | ---+---+---+---+---+ D | 1 | 5 | 6 | - | Com esta matriz montada podemos efetuar trocas do tipo rodadas e/ou mandantes. Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Outubro 2, 2012 Eu tinha pensado em algo assim. O problema da minha lógica era conseguir encaixar times sem duplicações mesmo, e a preguiça de refazer todos aqueles SQL em alguma linguagem :P Compartilhar este post Link para o post Compartilhar em outros sites
Hussay 0 Denunciar post Postado Outubro 3, 2012 Este é o tipo de problema que deixa nerds que nem eu maluco. Vendo NFL ontem na TV uma solução me ocorreu Vamos supor 4 times para simplificar A B C D Monta-se uma matriz A B C D ---+---+---+---+---+ A | | | | | ---+---+---+---+---+ B | | | | | ---+---+---+---+---+ C | | | | | ---+---+---+---+---+ D | | | | | Elimina-se o auto confronto A B C D ---+---+---+---+---+ A | - | | | | ---+---+---+---+---+ B | | - | | | ---+---+---+---+---+ C | | | - | | ---+---+---+---+---+ D | | | | - | Escolhe um time de forma alatoria, D por exemplo e o adversário A por exemplo, estes recebem as rodados 1 e 4 pois temos (n-1)*2 de rodadas A B C D ---+---+---+---+---+ A | - | | | 4 | ---+---+---+---+---+ B | | - | | | ---+---+---+---+---+ C | | | - | | ---+---+---+---+---+ D | 1 | | | - | Sobra na 1 e 4 rodados B e C , mas com mais times o passo acima seria recursivo, entre B e C, escolhemos D como 1º mandante A B C D ---+---+---+---+---+ A | - | | | 4 | ---+---+---+---+---+ B | | - | 1 | | ---+---+---+---+---+ C | | 4 | - | | ---+---+---+---+---+ D | 1 | | | - | Os passos seriam repetidos e teriamos algo como A B C D ---+---+---+---+---+ A | - | 3 | 2 | 4 | ---+---+---+---+---+ B | 6 | - | 1 | 2 | ---+---+---+---+---+ C | 5 | 4 | - | 6 | ---+---+---+---+---+ D | 1 | 5 | 6 | - | Com esta matriz montada podemos efetuar trocas do tipo rodadas e/ou mandantes. Não consegui entender muito bem o que você fez, porque não sei muito sobre matrizes, mas vou estudar um pouco sobre para sanar minha dificuldade. Muito Obrigado! :) Compartilhar este post Link para o post Compartilhar em outros sites
leonferrer 0 Denunciar post Postado Janeiro 2, 2013 Olá pessoal passo por uma situação parecida, creio que para resolver esta lógica podemos usar isto: http://pt.wikipedia.org/wiki/Competi%C3%A7%C3%B5es_de_todos_contra_todos Fixa-se o 1o Time e faz os outros rodarem numa sequencia lógica, assim, consegue-se gerar as rodadas sem problemas! Compartilhar este post Link para o post Compartilhar em outros sites
RennaMaster 0 Denunciar post Postado Junho 6, 2016 Ola galera! Bom, sei como é tenso isso de criar tabelas! Agora, eu descobri uma maneira que talvez seja MENOS DIFÍCIL. Consiste no seguinte: Fazer uma espécie de quadro onde verticalmente inserimos as letras dos times e horizontalmente as mesmas letras. Risca-se qdo houver coincidência de letras nos quadros. Então vamos enumerando os quadro de acordo com as rodadas dos confrontos, inclusive no INVERSO. Aviso que quase sempre rola de "dar ruim" pra cruzar os confrontos, pois pode haver de surgir confronto REPETIDO. O que atenua isso é ir escrevendo os confrontos já decididos daquela rodada que você esteja fazendo. Então assim vai fazendo até o final, depois vai posicionando os mandos até ficar do seu gosto, se quiser criar um torneio em "turno e returno" é só INVERTER os mandos dos confrontos a partir da segunda metade da tabela. Enfim... explicando assim talvez seja difícil entender, mas vou ver se consigo colocar aqui um "modelo" do esquema, alem da tabela mesmo em si(14 equipes, 18 equipes e 22 equipes). Ah! Melhor fazer com número PAR de equipes, pois com numero ÍMPAR fica MAIS DIFÍCIL ainda porque teria que se retirar uma equipe por rodada devido a "folga". Valeu galera, até a próxima! Compartilhar este post Link para o post Compartilhar em outros sites
RennaMaster 0 Denunciar post Postado Outubro 4, 2016 Ola pessoas! Novidades! Bom, tô trabalhando "no braço" mesmo. Seguinte: já criei algumas tabelas (pares): 10, 12, 14, 16, 18, 20 e 22 times, (ímpares): 9, 11, 13, 15, 17 e 19 times... UFA!!! q trabalho danado! 😥 mas ainda vou fazer mais ímpares: 21, 23, 25 e 27 times e pares: 24, 26 e 28 times. Prometo postar tudo aqui qdo tiver pronto! Por enquanto vou postar uma "tabela modelo" com 8 times: TABELA DE EXEMPLO 8 EQUIPES 1a Rodada Equipe 2 x Equipe 8 Equipe 6 x Equipe 3 Equipe 5 x Equipe 4 Equipe 1 x Equipe 7 2a Rodada Equipe 3 x Equipe 2 Equipe 4 x Equipe 1 Equipe 8 x Equipe 6 Equipe 7 x Equipe 5 3a Rodada Equipe 5 x Equipe 2 Equipe 1 x Equipe 3 Equipe 6 x Equipe 4 Equipe 7 x Equipe 8 4a Rodada Equipe 2 x Equipe 4 Equipe 6 x Equipe 1 Equipe 3 x Equipe 7 Equipe 8 x Equipe 5 5a Rodada Equipe 7 x Equipe 2 Equipe 1 x Equipe 8 Equipe 5 x Equipe 6 Equipe 4 x Equipe 3 6a Rodada Equipe 1 x Equipe 5 Equipe 6 x Equipe 2 Equipe 4 x Equipe 7 Equipe 3 x Equipe 8 7a Rodada Equipe 2 x Equipe 1 Equipe 7 x Equipe 6 Equipe 8 x Equipe 4 Equipe 5 x Equipe 3 Valeu ate a próxima! Compartilhar este post Link para o post Compartilhar em outros sites
RennaMaster 0 Denunciar post Postado Outubro 14, 2016 Ainda vou fazer também as de 29, 30, 31 e 32 equipes gente. Aguardem! Compartilhar este post Link para o post Compartilhar em outros sites