• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

watt

Calendario de Futebol .. Helpp

17 mensagens neste tópico

Hello pessoal!

alguém tem ai por ai um algoritmo que permita construi o calendário para um campeonato de futebol ?

estou já aki á dois dias a tentar, e nada, estou com um problema kalker aqui plo meio... cada jornada devia ter 6 jogos.... os 3 primeiros dá bem, só que depois .... ui ui é mt mau... umas têm 4 outras 5 e uma ou outra com 6... no fim ficam a faltar +- 10 jogos... alguém já fez algo do género ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não usas o mesmo algoritmo do campeonato nacional?

Ou então usas o teu algoritmo mas sempre baseado em rodas as combinações obtidas.

O primeiro passo é fazeres uma combinação entre equipas, se forem 12 equipas vais ter 6 jogos, essa é a tua primeira jornada.

O segundo passo é rodar as equipas por essas combinações, obtens assim as jornadas seguintes, sempre com o mesmo número de equipas e jogos.

Quando terminares, basta agarrar em cada jornada e construir a segunda volta trocando apenas as equipas que jogam fora com as que jogam em casa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso já fiz +-, o problema é q a meio a coisa complica-se as 5 primeiras jornadas saiem sp bem, só q depois.... começa a correr mal, pq há equipas q ja se encontraram, outras ja  estão a jogar nessa mesma jornada.... e ai aparecem os problemas. onde posso arranjar o do campeonato nacional ? n vi o sorteio :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz isso a uns anos. O que fiz foi pegar na grelha do campeonato nacional, ver que número estava associado a cada equipa e reconstruir a grelha. Depois verifiquei o padrão que aquilo seguia. O método funciona para qualquer número par de equipas (com número impar podes sempre adicionar uma equipa falsa, que representa a folga).

Mas isso já foi a muito tempo, já não me lembro do padrão. Mas as jornadas seguintes também seguem um esquema simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sabes onde posso sacar uma grelha em xls ?

só n percebo o que estou a falhar ... deve de ser um telhe kalker

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu peguei no calendario que tava no jornal de noticias e descobri a grelha :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois é não tinha reparado nisso ... mas mesmo assim não estou a conseguir fazer o meu algoritmo .... :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nada feito... isto vai de mal a pior... uma coisa que parece tão simples como se pode complicar.... cum caraças

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tem muito que saber.

Fazes uma lista com todos os clubes, pegas no primeiro, e iteras a lista toda e tens os jogos dessa equipa, pegas no segundo, iteras pela lista toda excepto o primeiro, e por aí fora. Depois o home/away é só fazeres random. Para teres os clubes random, fazes shuffle ao array antes de começares.

Isto para a 1ª metade do campeonato, a 2ª é só fazeres reverse ao away/home.

EDIT: Código Python que faz o serviço (excepto a parte do shuffle):

jogos = []
clubes = ["A", "B", "C", "D", "E", "F"]
i = 0
for clube in clubes:
for clube2 in clubes[i+1:]:
	jogos.append([clube, clube2])
i += 1

print jogos

Output (espaçamentos feitos agora à mão):

[['A', 'B'],

['A', 'C'],

['A', 'D'],

['A', 'E'],

['A', 'F'],

['B', 'C'],

['B', 'D'],

['B', 'E'],

['B', 'F'],

['C', 'D'],

['C', 'E'],

['C', 'F'],

['D', 'E'],

['D', 'F'],

['E', 'F']]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

                    for (p1 = 0; p1 < ListaIdTeam.Count(); p1++)
                    {
                        for (p2 = p1+1; p2 < ListaIdTeam.Count(); p2++)
                        {
                            jogos jogo = new jogos();
                            jogo.hora = "20:00";
                            jogo.idcomp = idcomp;
                            jogo.comp = "Liga";


                                jogo.divisao = ListaIdTeam.ElementAt(p1).divisao;
                                jogo.serie = ListaIdTeam.ElementAt(p1).serie;
                                jogo.equipa1 = ListaIdTeam.ElementAt(p1).nomeequipa;
                                jogo.id_equipa1 = ListaIdTeam.ElementAt(p1).id_equipa;
                                jogo.equipa2 = ListaIdTeam.ElementAt(p2).nomeequipa;
                                jogo.id_equipa2 = ListaIdTeam.ElementAt(p2).id_equipa;
                                //jogo.jornada = jornada;
                                Ljogos.Add(jogo);


                        }
                    }

e agora descortinar as jorandas ... onde é que está o da sequência... olho para isto mas n consigo por os jogos a bater certo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ver se te consigo explicar minimamente, mas sem fazer a "papa toda" de te dar código.

Deixa-me pegar no nosso campeonato. São 16 equipas. Vamos dar-lhes números de 1 a 15 e chamar à 16ª equipa o *. Todas as equipas fazem os mesmos jogos em sequência contra as equipas de 1 a 15, alternando entre jogar fora e em casa. Quer dizer que uma equipa que joga contra i numa jornada, joga contra i+1 na jornada seguinte. E quando chega ao final "roda" e volta ao início. Isto é, a seguir a jogar com 15, jogas contra o 1. Isto também implica que quando uma equipa de número i jogar contra i-1 teria de jogar contra ela própria na jornada seguinte. Aí, joga contra a equipa * (tradicionalmente chamada da equipa que "faz as vezes") e faz dois jogos seguidos em casa ou fora para o campeonato ter sentido.

Concretizando, e para perceberes melhor com o calendário deste ano: http://www.futebol365.pt/competicoes/calendario.asp?comp=SuperLiga&epoca=2008-2009

A numeração pode ser pensada como a seguinte:

1 - Benfica

2 - Porto

3 - Boavista

4 - Sporting

5 - Leixões

6 - Naval

7 - V. Guimarães

8 - E. Amadora

9 - Académica

10 - V. Setúbal

11 - Marítimo

12 - Nacional

13 - Trofense

14 - Braga

15 - Belenenses

* - Rio Ave

Nota que a primeira jornada é:

1 - *

2 - 15

3 - 14

4 - 13

5 - 12

6 - 11

7 - 10

8 - 9

Vês o padrão?

E como é a próxima jornada? Por exemplo, a equipa 6 jogou com a 11, a seguir joga com... a 12! E isto faz sentido? Sim, porque a equipa 12 jogou com a 5, logo a seguir vem a equipa... 6! E como a 12 tinha  jogado fora e a 6 tinha jogado em casa, temos o jogo 12-6 na próxima jornada. Percebeste a ideia?

Agora o caso do *. A equipa 1 jogou com *, ou seja, jogou com "ela própria" em termos de ordem. Logo, a seguir joga com a 2 (bate certo pois 2 tinha acabado de jogar com a 15 e a seguir a 15 vem o 1). E quem joga a seguir com asterisco? ). 9 tinha jogado com 8, logo a seguir tinha de jogar com 8+1=9, ou seja, 9 a seguir joga com asterisco. E em termos de ser em casa ou fora? A "regra" é que asterisco também troca sempre em casa e fora. Logo, como * jogou fora na 1ª jornada, a seguir recebe o 9 (9 joga duas vezes fora). E entre 1 e 2? A seguir a 2, 1 deverá jogar com 3. Logo, como 3 joga fora na segunda jornada, 1 deverá jogar em casa, para depois podermos ter o jogo 3-1 na 3ª jornada.

Resumindo, as três jornadas seguintes serão (jornadas 2, 3 e 4):

*  - 9

1 - 2

15 - 3

14 - 4

13 - 5

12 - 6

11 - 7

10 - 8

-----------------------

2 - *

3 - 1

4 - 15

5 - 14

6 - 13

7 - 12

8 - 11

9 - 10

-----------------------

* - 10

2 - 3

1 - 4

15 - 5

14 - 6

13 - 7

12 - 8

11 - 9

Achas que percebeste a lógica? Já agora, por curiosidade, isto mostra que a única equipa que não joga a sequência de jogos de 1 até 15 é o asterisco, pois faz os jogos da seguinte maneira: 1, 9, 2, 10, 3, 11, etc. Percebes?

Resta dizer que além de jogarem duas vezes fora ou em casa quando lhes calha jogar com o *, também jogam duas vezes fora ou em casa quando muda de volta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya isso já tinha reparadap, o prog é que no ultimo algurito q fiz com base do tirácio tenho lá tudo, o problema é que qd estou a arrumar as jornadas xega a uma fase que se baralha

n sei pq mas ele esta a fazer-me 2 fora 2 em casa e sp assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º  MIK-CR

2º Opeia F.C

3º LusiGool

4º SocomManiaks

5º Cromos

6º Bate nAvó

7º Crazy Skull´s

8º Barreirense

9º Juventude Azeitonense

10º Vitória Futebol Clube

11º ShinChan

12º Azeitão Futebol Club

ShinChan  Azeitão Futebol Club

Juventude Azeitonense Azeitão Futebol Club

Vitória Futebol Clube ShinChan

Juventude Azeitonense Vitória Futebol Clube

Juventude Azeitonense ShinChan

Barreirense ShinChan

Barreirense Azeitão Futebol Club

Barreirense Vitória Futebol Clube

Barreirense Juventude Azeitonense

Crazy  Skull´s Azeitão Futebol Club

Crazy  Skull´s ShinChan

Crazy  Skull´s Vitória Futebol Clube

Crazy  Skull´s Juventude Azeitonense

Crazy  Skull´s Barreirense

Bate nAvó Azeitão Futebol Club

Bate nAvó ShinChan

Bate nAvó Vitória Futebol Clube

Bate nAvó Barreirense

Bate nAvó Juventude Azeitonense

Cromos Azeitão Futebol Club

Bate nAvó Crazy  Skull´s

Cromos ShinChan

Cromos Juventude Azeitonense

Cromos Vitória Futebol Clube

Cromos Crazy  Skull´s

Cromos Barreirense

SocomManiaks Azeitão Futebol Club

Cromos Bate nAvó

SocomManiaks ShinChan

SocomManiaks Juventude Azeitonense

SocomManiaks Vitória Futebol Clube

SocomManiaks Crazy  Skull´s

SocomManiaks Barreirense

SocomManiaks Bate nAvó

LusiGool Azeitão Futebol Club

SocomManiaks Cromos

LusiGool ShinChan

LusiGool Vitória Futebol Clube

LusiGool Juventude Azeitonense

LusiGool Barreirense

LusiGool Crazy  Skull´s

LusiGool Bate nAvó

LusiGool SocomManiaks

LusiGool Cromos

Opeia F.C ShinChan

Opeia F.C Azeitão Futebol Club

Opeia F.C Vitória Futebol Clube

Opeia F.C Juventude Azeitonense

Opeia F.C Barreirense

Opeia F.C Bate nAvó

Opeia F.C Crazy  Skull´s

Opeia F.C Cromos

Opeia F.C SocomManiaks

MIK-CR Azeitão Futebol Club

Opeia F.C LusiGool

MIK-CR ShinChan

MIK-CR Juventude Azeitonense

MIK-CR Vitória Futebol Clube

MIK-CR Barreirense

MIK-CR Crazy  Skull´s

MIK-CR Bate nAvó

MIK-CR Cromos

MIK-CR SocomManiaks

MIK-CR LusiGool

MIK-CR Opeia F.C

não estou a conseguir ajustar as jonadas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ver se te consigo explicar minimamente, mas sem fazer a "papa toda" de te dar código.

Deixa-me pegar no nosso campeonato. São 16 equipas. Vamos dar-lhes números de 1 a 15 e chamar à 16ª equipa o *. Todas as equipas fazem os mesmos jogos em sequência contra as equipas de 1 a 15, alternando entre jogar fora e em casa. Quer dizer que uma equipa que joga contra i numa jornada, joga contra i+1 na jornada seguinte. E quando chega ao final "roda" e volta ao início. Isto é, a seguir a jogar com 15, jogas contra o 1. Isto também implica que quando uma equipa de número i jogar contra i-1 teria de jogar contra ela própria na jornada seguinte. Aí, joga contra a equipa * (tradicionalmente chamada da equipa que "faz as vezes") e faz dois jogos seguidos em casa ou fora para o campeonato ter sentido.

Concretizando, e para perceberes melhor com o calendário deste ano: http://www.futebol365.pt/competicoes/calendario.asp?comp=SuperLiga&epoca=2008-2009

A numeração pode ser pensada como a seguinte:

1 - Benfica

2 - Porto

3 - Boavista

4 - Sporting

5 - Leixões

6 - Naval

7 - V. Guimarães

8 - E. Amadora

9 - Académica

10 - V. Setúbal

11 - Marítimo

12 - Nacional

13 - Trofense

14 - Braga

15 - Belenenses

* - Rio Ave

Nota que a primeira jornada é:

1 - *

2 - 15

3 - 14

4 - 13

5 - 12

6 - 11

7 - 10

8 - 9

Vês o padrão?

E como é a próxima jornada? Por exemplo, a equipa 6 jogou com a 11, a seguir joga com... a 12! E isto faz sentido? Sim, porque a equipa 12 jogou com a 5, logo a seguir vem a equipa... 6! E como a 12 tinha  jogado fora e a 6 tinha jogado em casa, temos o jogo 12-6 na próxima jornada. Percebeste a ideia?

Agora o caso do *. A equipa 1 jogou com *, ou seja, jogou com "ela própria" em termos de ordem. Logo, a seguir joga com a 2 (bate certo pois 2 tinha acabado de jogar com a 15 e a seguir a 15 vem o 1). E quem joga a seguir com asterisco? ). 9 tinha jogado com 8, logo a seguir tinha de jogar com 8+1=9, ou seja, 9 a seguir joga com asterisco. E em termos de ser em casa ou fora? A "regra" é que asterisco também troca sempre em casa e fora. Logo, como * jogou fora na 1ª jornada, a seguir recebe o 9 (9 joga duas vezes fora). E entre 1 e 2? A seguir a 2, 1 deverá jogar com 3. Logo, como 3 joga fora na segunda jornada, 1 deverá jogar em casa, para depois podermos ter o jogo 3-1 na 3ª jornada.

Resumindo, as três jornadas seguintes serão (jornadas 2, 3 e 4):

*  - 9

1 - 2

15 - 3

14 - 4

13 - 5

12 - 6

11 - 7

10 - 8

-----------------------

2 - *

3 - 1

4 - 15

5 - 14

6 - 13

7 - 12

8 - 11

9 - 10

-----------------------

* - 10

2 - 3

1 - 4

15 - 5

14 - 6

13 - 7

12 - 8

11 - 9

Achas que percebeste a lógica? Já agora, por curiosidade, isto mostra que a única equipa que não joga a sequência de jogos de 1 até 15 é o asterisco, pois faz os jogos da seguinte maneira: 1, 9, 2, 10, 3, 11, etc. Percebes?

Resta dizer que além de jogarem duas vezes fora ou em casa quando lhes calha jogar com o *, também jogam duas vezes fora ou em casa quando muda de volta.

épa... tentei fazer isso disseste mas está aqui a falar um detalhe... n se o kê ... 1º fiz o calendario da minha ultima equipa... equivale ao *, penso que o calendario está bem pq só se vai repetir n viragem da volta... mas depois agora estou a ter problemas na jornada 5 e 8, atenção que só estou a trabalhar com 12 equipas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora