[Rio-pm] Golf: Criando rodadas de um campeonato

Blabos de Blebe blabos em gmail.com
Quarta Julho 2 07:42:24 PDT 2008


Prefiro futebol ao invés de golf

2008/7/2 Fernando Oliveira <fernandocorrea em gmail.com>:
> e kd a sua tacada?
>
> 2008/7/2 Blabos de Blebe <blabos em gmail.com>:
>>
>> Bem, vamo lá
>>
>> Para as crianças que não tiveram infância e mataram as aulas de
>> matemática...
>>
>> my $j;  ## Numero de jogos unicos
>> my $t;  ## Numero de times
>> my $r;  ## Numero de rodadas unicas
>>
>>
>> ## Cada time joga uma vez para cada adversário, e não joga contra si
>> mesmo.
>> ## No caso de número ímpar de times, cada time joga com seus $t-1
>> adversários e folga uma rodada ($t-1 + 1 -> $t);
>> $r = $t%2 ? $t: $t-1;
>>
>>
>> ## Em cada rodada, um jogo para cada par de times.
>> $j = $r*$t/2;
>>
>> É muito simples
>>
>>
>> 2008/7/2 Gabriel Vieira <gabriel.vieira em gmail.com>:
>> > Corrija-me se eu estiver errado:
>> >
>> > Saída:
>> > ---------------------8<---------------------
>> > 1a Rodada:
>> >
>> >
>> > A              x              E
>> > D              x              B
>> >
>> > 2a Rodada:
>> >
>> >
>> > B              x              A
>> > E              x              C
>> >
>> > 3a Rodada:
>> >
>> >
>> > A              x              C
>> > B              x              D
>> >
>> > 4a Rodada:
>> >
>> >
>> > D              x              A
>> > C              x              E
>> >
>> > 5a Rodada:
>> >
>> >
>> > A              x              E
>> > D              x              B
>> >
>> > 6a Rodada:
>> >
>> >
>> > B              x              A
>> > E              x              C
>> >
>> > 7a Rodada:
>> >
>> >
>> > A              x              C
>> > B              x              D
>> >
>> > 8a Rodada:
>> >
>> >
>> > D              x              A
>> > C              x              E
>> >
>> > 9a Rodada:
>> >
>> >
>> > A              x              E
>> > D              x              B
>> >
>> > 10a Rodada:
>> >
>> >
>> > B              x              A
>> > E              x              C
>> > --------------------->8---------------------
>> >
>> >
>> > Está repetindo jogos. :)
>> >
>> > Deveria ser:
>> > ---------------------8<---------------------
>> >  1a  Rodada
>> >
>> > E              x               A
>> > D              x               B
>> >
>> >
>> >  2a  Rodada
>> >
>> > A              x               D
>> > E              x               C
>> >
>> >
>> >  3a  Rodada
>> >
>> > C              x               A
>> > B              x               E
>> >
>> >
>> >  4a  Rodada
>> >
>> > C              x               B
>> > D              x               E
>> >
>> >
>> >  5a  Rodada
>> >
>> > B              x               A
>> > D              x               C
>> > --------------------->8---------------------
>> >
>> > =)
>> >
>> > 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >> perl -e'@a=@ARGV;for$r(1..2*@a-2*$#a%2){print$/,$r,"a
>> >>
>> >> Rodada:",$/x3;printf"%-15sx%15s$/", em a[$_%2?(-$_-1,$_):$_||$r%2?($_,-$_-1):(-$_-1,$_)]for
>> >> 0..$#a/2- em a%2;@a[1..$#a]=@a[2..$#a,1]}' A B C D E
>> >>
>> >>
>> >> 2008/7/1 Blabos de Blebe <blabos em gmail.com>:
>> >>>
>> >>> Na época de futebol de botão eu fazia isso na mão...
>> >>>
>> >>> 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> > Quem dá menos?!
>> >>> >
>> >>> > 2008/7/1 Márcio Vitor <cromo.jml em gmail.com>:
>> >>> >>
>> >>> >> Sinistro! Aqui funciona, parabéns Fernando será que alguém abaixa ?
>> >>> >>
>> >>> >> Márcio Vitor
>> >>> >>
>> >>> >> 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> >> > Pô... como fica mais facil qdo se deixa de preguiça e se lê a
>> >>> >> > wiki!!!
>> >>> >> >
>> >>> >> > minha tacada:
>> >>> >> >
>> >>> >> > perl -e '@a=@ARGV;for(1..2*@a-2*!(@a%2)){print$/,$_,"a
>> >>> >> > Rodada:",$/x3;printf"%-15sx%15s$/", em a[$_, -$_-1] for
>> >>> >> > 0..$#a/2;@a[1..$#a]
>> >>> >> > =
>> >>> >> > @a[2..$#a,1]}' "Atltico MG" "Atltico PR" Botafogo Coritiba
>> >>> >> > Figueirense
>> >>> >> > Flamengo Fluminense Goias Gremio Internacional Ipatinga Nautico
>> >>> >> > Palmeiras
>> >>> >> > Portuguesa "Sao Paulo" Sport Vasco Vitoria
>> >>> >> >
>> >>> >> > (ignorando parada de em casa ou fora de casa...)
>> >>> >> >
>> >>> >> > 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> >> >>
>> >>> >> >> Na verdade, eu acho q tá certo... seria assim o ida e volta?
>> >>> >> >>
>> >>> >> >> 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> >> >>>
>> >>> >> >>> Agora q eu acho  q entendí!!! aquele codigo ta totalmente
>> >>> >> >>> errado!!!
>> >>> >> >>>
>> >>> >> >>> 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> >> >>>>
>> >>> >> >>>> Eu não sei se entendí muito bem não, mas seria algo assim?
>> >>> >> >>>>
>> >>> >> >>>> perl -e '@a=@ARGV;for$r(1..$#a){push em a,shift em a;print$/,$r,"a
>> >>> >> >>>> rodada:",$/x3;printf"%-15s x %15s$/",$ARGV[$_],$a[$_]for
>> >>> >> >>>> 0..($#a/2)}'
>> >>> >> >>>> "Atltico MG" "Atltico PR" Botafogo Coritiba Figueirense
>> >>> >> >>>> Flamengo
>> >>> >> >>>> Fluminense
>> >>> >> >>>> Goias Gremio Internacional Ipatinga Nautico Palmeiras
>> >>> >> >>>> Portuguesa
>> >>> >> >>>> "Sao
>> >>> >> >>>> Paulo"
>> >>> >> >>>> Sport Vasco Vitoria
>> >>> >> >>>>
>> >>> >> >>>> 2008/7/1 Gabriel Vieira <gabriel.vieira em gmail.com>:
>> >>> >> >>>>>
>> >>> >> >>>>> Ok,
>> >>> >> >>>>>
>> >>> >> >>>>> se tiver impar cada time fica fora 1 rodada (nao tem par para
>> >>> >> >>>>> ele),
>> >>> >> >>>>> dai todos jogam entre si e o mesmo número de partidas.
>> >>> >> >>>>>
>> >>> >> >>>>> Jogos de ida e volta:
>> >>> >> >>>>> - Cada jogo há um mandante (o time que joga em casa e o
>> >>> >> >>>>> visitante).
>> >>> >> >>>>> - ex.: Cruzeiro e Vasco jogam em MG, logo Cruzeiro é o
>> >>> >> >>>>> Mandante.
>> >>> >> >>>>> - O Mandante é determinado pelo 1o time do confronto
>> >>> >> >>>>> (Flamengo e
>> >>> >> >>>>> Vitória - Flamengo é Mandante)
>> >>> >> >>>>> - Logo, jogos de ida e volta seria 1 jogo com o time A
>> >>> >> >>>>> mandante e
>> >>> >> >>>>> B
>> >>> >> >>>>> visitante, e outro ao contrário.
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>> No código, há 20 times e 3 times, só escolher :)
>> >>> >> >>>>> ---------------------->8----------------------
>> >>> >> >>>>> my($c,$d,$i);
>> >>> >> >>>>> format Rodada =
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>> ^##@| @<<<<<<
>> >>> >> >>>>> $i,"a","Rodada"
>> >>> >> >>>>>
>> >>> >> >>>>> .
>> >>> >> >>>>> format Jogos =
>> >>> >> >>>>> ^<<<<<<<<<<<<  @|  @>>>>>>>>>>>>
>> >>> >> >>>>> $c,"x",$d
>> >>> >> >>>>> .
>> >>> >> >>>>> my em t=("Atlético MG","Atlético
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>> PR","Botafogo","Coritiba","Cruzeiro","Figueirense","Flamengo","Fluminense","Goiás","Grêmio","Internacional","Ipatinga","Náutico","Palmeiras","Portuguesa","Santos","São
>> >>> >> >>>>> Paulo","Sport","Vasco","Vitória");
>> >>> >> >>>>> my em t=("Atlético MG","Atlético PR","Botafogo");
>> >>> >> >>>>> my$j=($#t+1)/2;
>> >>> >> >>>>> my em a=@t[0..$j-1];
>> >>> >> >>>>> my em b=reverse em t[$j..$#t];
>> >>> >> >>>>> push(@a,"")if$j=~/\./;
>> >>> >> >>>>> for(0..$#a+$#b){
>> >>> >> >>>>> i(((++$i/2)=~/\./?(\@b,\@a):(\@a,\@b)));
>> >>> >> >>>>> @a=(shift em a,shift em b, em a);
>> >>> >> >>>>> push(@b,pop em a);
>> >>> >> >>>>> }
>> >>> >> >>>>> sub i{
>> >>> >> >>>>> $~='Rodada';
>> >>> >> >>>>> write;
>> >>> >> >>>>> my$i=-1;
>> >>> >> >>>>> $~='Jogos';
>> >>> >> >>>>> for(@{$_[0]}){
>> >>> >> >>>>> $c=@{$_[0]}[++$i];
>> >>> >> >>>>> $d=@{$_[1]}[$i];
>> >>> >> >>>>> write if $c and $d;
>> >>> >> >>>>> }
>> >>> >> >>>>> }
>> >>> >> >>>>> ----------------------8<----------------------
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>> 2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:
>> >>> >> >>>>> > Tipo, eu não sei nada de futebol, mas me diz, como fica se
>> >>> >> >>>>> > tiver
>> >>> >> >>>>> > numero
>> >>> >> >>>>> > impar?
>> >>> >> >>>>> > E como é esse negocio de jogo ida e volta?
>> >>> >> >>>>> >
>> >>> >> >>>>> > 2008/7/1 Gabriel Vieira <gabriel.vieira em gmail.com>:
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Então,
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> só fiz mudar nomes de variáveis a algumas funções pra
>> >>> >> >>>>> >> diminuir
>> >>> >> >>>>> >> o
>> >>> >> >>>>> >> código.
>> >>> >> >>>>> >> Como sei que o Fernando vai fazer isso em 30 caracteres,
>> >>> >> >>>>> >> fica
>> >>> >> >>>>> >> só
>> >>> >> >>>>> >> de
>> >>> >> >>>>> >> tacada inicial :P
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> ----------------------8<----------------------
>> >>> >> >>>>> >> my($c,$d,$i);
>> >>> >> >>>>> >> format Rodada =
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> ^##@| @<<<<<<
>> >>> >> >>>>> >> $i,"a","Rodada"
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> .
>> >>> >> >>>>> >> format Jogos =
>> >>> >> >>>>> >> ^<<<<<<<<<<<<  @|  @>>>>>>>>>>>>
>> >>> >> >>>>> >> $c,"x",$d
>> >>> >> >>>>> >> .
>> >>> >> >>>>> >> my em t=("Atlético MG","Atlético
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> PR","Botafogo","Coritiba","Cruzeiro","Figueirense","Flamengo","Fluminense","Goiás","Grêmio","Internacional","Ipatinga","Náutico","Palmeiras","Portuguesa","Santos","São
>> >>> >> >>>>> >> Paulo","Sport","Vasco","Vitória");
>> >>> >> >>>>> >> my$j=($#t+1)/2;
>> >>> >> >>>>> >> my em a=@t[0..$j-1];
>> >>> >> >>>>> >> my em b=reverse em t[$j..$#t];
>> >>> >> >>>>> >> push(@a,"")if$j=~/\./;
>> >>> >> >>>>> >> for(0..$#t-1){
>> >>> >> >>>>> >> i(((++$i/2)=~/\./?(\@b,\@a):(\@a,\@b)));
>> >>> >> >>>>> >> @a=(shift em a,shift em b, em a);
>> >>> >> >>>>> >> push(@b,pop em a);
>> >>> >> >>>>> >> }
>> >>> >> >>>>> >> sub i{
>> >>> >> >>>>> >> $~='Rodada';
>> >>> >> >>>>> >> write;
>> >>> >> >>>>> >> my$i=-1;
>> >>> >> >>>>> >> $~='Jogos';
>> >>> >> >>>>> >> for(@{$_[0]}){
>> >>> >> >>>>> >> $c=@{$_[0]}[++$i];
>> >>> >> >>>>> >> $d=@{$_[1]}[$i];
>> >>> >> >>>>> >> write if $c and $d;
>> >>> >> >>>>> >> }
>> >>> >> >>>>> >> }
>> >>> >> >>>>> >> ---------------------->8----------------------
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Abraços,
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> ---------- Forwarded message ----------
>> >>> >> >>>>> >> From: Gabriel Vieira <gabriel.vieira em gmail.com>
>> >>> >> >>>>> >> Date: 2008/7/1
>> >>> >> >>>>> >> Subject: Golf: Criando rodadas de um campeonato
>> >>> >> >>>>> >> To: Perl Mongers Rio de Janeiro <rio-pm em pm.org>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Opa!
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Um colega me veio pedindo ajuda em um código para elaborar
>> >>> >> >>>>> >> as
>> >>> >> >>>>> >> rodadas
>> >>> >> >>>>> >> de um campeonato.
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Me mostrou o seguinte link
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> (http://pt.wikipedia.org/wiki/Torneio#Algoritmo_para_marca.C3.A7.C3.A3o_de_jogos).
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Entreguei, então pensei num golfe ;)
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Seria um programa que a partir de uma lista @times
>> >>> >> >>>>> >> organiza um
>> >>> >> >>>>> >> campeonato com 1 jogo apenas entre as mesmas equipes.
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Ou caso queiram, podemos fazer um jogo de ida e outro de
>> >>> >> >>>>> >> volta.
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Só para ilustração:
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> -----------------8<-----------------
>> >>> >> >>>>> >> my @times = (   "Atlético MG",
>> >>> >> >>>>> >>               "Botafogo",
>> >>> >> >>>>> >>               "Cruzeiro",
>> >>> >> >>>>> >>               "Flamengo",
>> >>> >> >>>>> >>               "Fluminense",
>> >>> >> >>>>> >>               "Ipatinga",
>> >>> >> >>>>> >>               "Palmeiras",
>> >>> >> >>>>> >>               "São Paulo",
>> >>> >> >>>>> >>               "Vasco",
>> >>> >> >>>>> >>               "Vitória",
>> >>> >> >>>>> >> );
>> >>> >> >>>>> >> ----------------->8-----------------
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Exemplo:
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> -----------------8<-----------------
>> >>> >> >>>>> >> my @times = (   "Atlético MG",
>> >>> >> >>>>> >>               "Botafogo",
>> >>> >> >>>>> >>               "Cruzeiro",
>> >>> >> >>>>> >>               "Flamengo",
>> >>> >> >>>>> >> );
>> >>> >> >>>>> >> ----------------->8-----------------
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Saída:
>> >>> >> >>>>> >> -----------------8<-----------------
>> >>> >> >>>>> >>  1a  Rodada
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Flamengo        x      Atlético MG
>> >>> >> >>>>> >> Cruzeiro        x         Botafogo
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>  2a  Rodada
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Atlético MG     x         Cruzeiro
>> >>> >> >>>>> >> Flamengo        x         Botafogo
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>  3a  Rodada
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Botafogo        x      Atlético MG
>> >>> >> >>>>> >> Flamengo        x         Cruzeiro
>> >>> >> >>>>> >> ----------------->8-----------------
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Deu pra entender?
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> Abraços!
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> --
>> >>> >> >>>>> >> Gabriel Vieira
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >>
>> >>> >> >>>>> >> --
>> >>> >> >>>>> >> Gabriel Vieira
>> >>> >> >>>>> >> _______________________________________________
>> >>> >> >>>>> >> Rio-pm mailing list
>> >>> >> >>>>> >> Rio-pm em pm.org
>> >>> >> >>>>> >> http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >> >>>>> >
>> >>> >> >>>>> >
>> >>> >> >>>>> >
>> >>> >> >>>>> > --
>> >>> >> >>>>> > Just another Perl Hacker,
>> >>> >> >>>>> > Fernando (SmokeMachine)
>> >>> >> >>>>> > http://perl-e.org
>> >>> >> >>>>> > _______________________________________________
>> >>> >> >>>>> > Rio-pm mailing list
>> >>> >> >>>>> > Rio-pm em pm.org
>> >>> >> >>>>> > http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >> >>>>> >
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>>
>> >>> >> >>>>> --
>> >>> >> >>>>> Gabriel Vieira
>> >>> >> >>>>> _______________________________________________
>> >>> >> >>>>> Rio-pm mailing list
>> >>> >> >>>>> Rio-pm em pm.org
>> >>> >> >>>>> http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >> >>>>
>> >>> >> >>>>
>> >>> >> >>>>
>> >>> >> >>>> --
>> >>> >> >>>> Just another Perl Hacker,
>> >>> >> >>>> Fernando (SmokeMachine)
>> >>> >> >>>> http://perl-e.org
>> >>> >> >>>
>> >>> >> >>>
>> >>> >> >>> --
>> >>> >> >>> Just another Perl Hacker,
>> >>> >> >>> Fernando (SmokeMachine)
>> >>> >> >>> http://perl-e.org
>> >>> >> >>
>> >>> >> >>
>> >>> >> >> --
>> >>> >> >> Just another Perl Hacker,
>> >>> >> >> Fernando (SmokeMachine)
>> >>> >> >> http://perl-e.org
>> >>> >> >
>> >>> >> >
>> >>> >> > --
>> >>> >> > Just another Perl Hacker,
>> >>> >> > Fernando (SmokeMachine)
>> >>> >> > http://perl-e.org
>> >>> >> > _______________________________________________
>> >>> >> > Rio-pm mailing list
>> >>> >> > Rio-pm em pm.org
>> >>> >> > http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >> >
>> >>> >> _______________________________________________
>> >>> >> Rio-pm mailing list
>> >>> >> Rio-pm em pm.org
>> >>> >> http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >
>> >>> >
>> >>> >
>> >>> > --
>> >>> > Just another Perl Hacker,
>> >>> > Fernando (SmokeMachine)
>> >>> > http://perl-e.org
>> >>> > _______________________________________________
>> >>> > Rio-pm mailing list
>> >>> > Rio-pm em pm.org
>> >>> > http://mail.pm.org/mailman/listinfo/rio-pm
>> >>> >
>> >>> _______________________________________________
>> >>> Rio-pm mailing list
>> >>> Rio-pm em pm.org
>> >>> http://mail.pm.org/mailman/listinfo/rio-pm
>> >>
>> >>
>> >>
>> >> --
>> >> Just another Perl Hacker,
>> >> Fernando (SmokeMachine)
>> >> http://perl-e.org
>> >> _______________________________________________
>> >> Rio-pm mailing list
>> >> Rio-pm em pm.org
>> >> http://mail.pm.org/mailman/listinfo/rio-pm
>> >>
>> >
>> >
>> >
>> > --
>> > Gabriel Vieira
>> > _______________________________________________
>> > Rio-pm mailing list
>> > Rio-pm em pm.org
>> > http://mail.pm.org/mailman/listinfo/rio-pm
>> >
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
> --
> Just another Perl Hacker,
> Fernando (SmokeMachine)
> http://perl-e.org
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>


Mais detalhes sobre a lista de discussão Rio-pm