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

Fernando Oliveira fernandocorrea em gmail.com
Terça Julho 1 09:48:38 PDT 2008


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


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