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

Fernando Oliveira fernandocorrea em gmail.com
Terça Julho 1 13:27:28 PDT 2008


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


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