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

Márcio Vitor cromo.jml em gmail.com
Terça Julho 1 11:59:56 PDT 2008


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
>


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