[Rio-pm] Golf: Criando rodadas de um campeonato
Gabriel Vieira
gabriel.vieira em gmail.com
Terça Julho 1 08:54:03 PDT 2008
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
Mais detalhes sobre a lista de discussão Rio-pm