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

Gabriel Vieira gabriel.vieira em gmail.com
Terça Julho 1 09:27:58 PDT 2008


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


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