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

Fernando Oliveira fernandocorrea em gmail.com
Quarta Julho 2 06:37:10 PDT 2008


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20080702/fa327cc0/attachment-0001.html>


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