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

Fernando Oliveira fernandocorrea em gmail.com
Terça Julho 1 11:51:42 PDT 2008


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


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