Algorithme / programmation tournoi poules match défis

Algorithme / programmation tournoi poules match défis - VB/VBA/VBS - Programmation

Marsh Posté le 27-11-2009 à 15:09:26    

Salut @ tous,
 
J'ai un petit soucis, je suis actuellement en train de réaliser une feuille excel qui me permettra d'organiser un tournoi de foot en salle. De nature tres pointilleux, je voudrais que tout soit automatique.
 
Dans la feuille, je rentre le nomre d'euipes, le nombre de poules, et tout ce beau monde se reparti comme il faut, ca c'est bon, ca marche.
 
ex : 16 equipes 4 poules -> 4 equipes par poules (logique)
      16 equipes 3 poules -> 1 poule de 6 equ et 2 poules de 5 equ
 
Bref jusque la, tout marche bien.
 
Mon probleme est le suivant:
 
Je veux maintenant etablir la liste de tous les matchs à jouer. On considere que toutes les equipes d'une meme poule se rencontreront.
Donc pour une poule de 4, il y aura 3 matchs par équipes, soit 6 matchs en tout (4*3 /2 ), repartis comme suit:
 
M1 :1-2
M2 :3-4
M3 :1-3
M4 :2-4
M5 :1-4
M6 :3-2
 
Je n'arrive pas à trouver d'algorithmes pour me generer ce genre de chose. essayez rien qu'avec 6 equipes et ca devient tres chaud. D'autant qu'il faut essayer de rester equitable et eviter de faire jouer une equipe 2 fois de suite, ou a intervalle irrégulier (genre l'equipe joue les 2 premiers matchs puis attend 5 matchs avant d'en jouer 3 d'affiler)
 
Pour simplifier la chose on considere pour l'instant qu'un seul terrain, a l'avenir on pourra imaginer repartir le tout sur 2,3,...,n terrains.
 
J'ajoute egalement que toutes les poules ne sont pas automatiquement des nombre paires (l'exemple 2 considerais 3 poules, 1 de 6 et 2 de 5 equipes)
 
Ce que je cherche donc en priorite c'est un algorithme, mais pour info je programme ma feuille en VBA (connaissance basique)
 
 
Voila, selon moi ca c'est un bon probleme, que certains prof on peut etre meme deja posé à leurs eleves. De mon cote je continue de chercher, et si  j'ai (nan, quand j'aurai) la solution je vous en ferais part.
 
Hop Salut @ tous


Message édité par starkoala le 27-11-2009 à 15:13:26
Reply

Marsh Posté le 27-11-2009 à 15:09:26   

Reply

Marsh Posté le 27-11-2009 à 16:09:08    

Bon, ce petit code deja genere tous les matchs a disputer, mais ne les classes pas.
 
'nbrequ = Nombre d'equipes
 
For i = 2 To nbrequ
     
        For j = 1 To i - 1
         
            Sheets("feuil1" ).Cells(i, j).Value = j & " _ " & i
         
        Next
         
    Next

Reply

Marsh Posté le 27-11-2009 à 16:36:14    

Le problème est intéressant.
Il y a certainement une solution pour classer l'ordre des matches, mais elle n'est pas si évidente.
 
A vue de nez, dans une poule de 4 équipes, il semble impossible d'avoir mieux que dans ton exemple : 2 équipes devront enchainer 2 matches, et les 2 équipes seront favorisées.
Par contre à partir de 5 équipes c'est possible de laisser un match de repos à chacun.

Reply

Marsh Posté le 27-11-2009 à 17:02:26    

Voici les grandes lignes d'un algo qui devrait fonctionner (c'est celui que j'ai utilisé pour classer manuellement les matches d'une poule de 5) :
 

Code :
  1. Match 1 : A contre B
  2. Match N : Pour chaque combinaison X-Y de 2 équipes :
  3.           Si cette combinaison a déjà été choisie pour un match < N, tu l'élimines et tu passes à la suivante
  4.           Sinon, Si X ou Y a déjà joué le match N-1 (voir note), tu l'élimines et tu passes à la suivante
  5.           Sinon, Match N = X contre Y


 
Note : ce chiffre 1 devrait idéalement être une variable M, et au lieu de vérifier seulement le dernier match, il faudrait vérifier les M derniers matches. M doit pouvoir se calculer en fonction de la taille de la poule : le nombre de "matches de repos" augmente logiquement avec la taille de la poule (à condition de jouer sur un seul terrain).


Message édité par frankie_flowers le 27-11-2009 à 17:03:23
Reply

Marsh Posté le 27-11-2009 à 17:04:26    

Bonsoir,
tu veux le faire toi-même??
sinon:
http://www.logitheque.com/logiciel [...] _28045.htm
 
il semble gratuit
Cordialement

Reply

Marsh Posté le 01-12-2009 à 14:35:21    

Salut, merci pour vos reponses,
 
@ Frankie Flowers
 
Oui tu as raison, cet algorithme fonctionnerait sans doute.
 
As tu essayé le code VBA que j'ai mis ? je crois qu'il dispense de la verification que tu fait en ligne 3, si j'ai bien compris.
 
Une chose aussi, dans ta ligne 4 tu evite de faire joueur une equipe 2 fois d'affilé, et pour ca, tu saute le match qui ferais rejouer une equipe, le probleme c'est qu'une fois ce match sauté tu ne le refais pas jouer.
 
Bref, sinon je vais essayer de programmer quelque chose dans ce gout la.
 
@ Seniorpapou
 
Oui je veux le faire moi meme, c'est en quelque sorte un petit defis, ca m'entrainne aussi un peu sur VBA.
 
Pour info j'ai installé ton logiciel, et bien qu'il demande une clé d'activation, il est gratuit.Je l'ai essayé et il est réellement SUPER. En fait c'est a ca que je souhaiterais aboutir :p, mais sous Excel.


Message édité par starkoala le 01-12-2009 à 14:43:33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed