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

Gabriel Vieira gabriel.vieira em gmail.com
Terça Julho 1 20:20:20 PDT 2008


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


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