[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