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

Fernando Oliveira fernandocorrea em gmail.com
Terça Julho 1 12:01:40 PDT 2008


E então?! ninguém mais brinca não?!

2008/7/1 Fernando Oliveira <fernandocorrea em gmail.com>:

> O algoritimo completo, sem ida e volta:
>
> 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;@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
>
>
> 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
>>
>
>
>
> --
> Just another Perl Hacker,
> Fernando (SmokeMachine)
> http://perl-e.org
>



-- 
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/20080701/983634d1/attachment-0001.html>


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