Algorithm

Résolu
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 27 mai 2005 à 19:37
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 30 mai 2005 à 13:21
Salut je but sur un problème d'algorithme:

je cherche à confectionner un calentrierde match aller d'un championat de football

on note que si le nbe d'équipe entré est impère on a automatiquement une equipe ajouté qui se nomera "ex"

par exemple si on a 5 équipe on aura :

t[0]="A",t[1]="B",.....,t[4]="E" et t[5]="ex" equipe ajouté pour avoir
un nbr paire d'équipe pous on a la liste des match pssible:

0-1 0-2
0-3 0-4 0-5
1-2 1-3 1-4 1-5
2-3 2-4 2-5 3-4 3-5
4-5

A-B A-C A-D A-E
A-ex B-C B-D B-E B-ex C-D C-E C-ex
D-E D-ex E-ex



le travail consiste a générer un calendrier séparé en journées dans
lesquelles toutes les équipes s'affrontent 2 à 2 et aucune équipe ne
joue 2 fois dans la même journée et aucun match ne doit être redondant
dans le calendrier ex:



journée 1: journée 2:

A-B A-C

C-D D-E

E-ex B-ex



et ainsi de suite.

j'en ai fait un mais il ne fonctionne corectement qu'avec 4 équipes
(disons que mon alogo était fait en fonction de 4 ) je cherche à le
généraliser pour N équipe avec N dans [1,20]





j'espère avoir été claire dans mes explications.

8 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
29 mai 2005 à 21:18
salut,

voici un algorithme simple qui marche:

si tu as un nombre pair d'équipes (si c un nombre impair tu ajoutes une
equipe "fantome" et qd on joue contre elle, on est exempt), par exemple
10:

tu ecris un tableau de 2 lignes et 5 colonnes comme ca:

1 2 3 4 5

6 7 8 9 10



la premiere journée: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10 (cad
premiere ligne contre 2e ligne en restant ds la meme colonne)



puis tu fais pivoter les nombres du tableau precedent en gardant fixe l'equipe 1:

1 6 2 3 4

7 8 9 10 5



journée 2 : 1 vs 7, 6 vs 8, 2 vs 9, 3 vs 10, 4 vs 5



tu continues:

1 7 6 2 3

8 9 10 5 4



etc ...

tu peux t'assure facilement qu'il est sur de pas avoir de journées
redondantes, et que chaque équipe joue contre toutes les autres.

pour les matchs retours, tu prends le miroir des matchs allers ....



a+
3
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
27 mai 2005 à 23:51
Bonjour,
Si je me souvien bien de mes cours de maths, ton problème de probabilité se resoud par la formule suivante : nCp
n = nombre d'equipe.
p = nombre d'equipe par match (donc 2).

Pour le cas ou tu ne saurai pas ce que veux dire cette formule tu peux la remplacer par :
n!/(p!(n-p)!)

Toujours pour le cas ou tu ne saurais pas ce que veux dire la notation n!
On dit "factoriel n" et c'est un calcul simple qui consiste a multiplier l'entier naturel n par chacun des entier naturels non nul inférieur à lui.
Exemple:4! 4*3*2*1 24

Grace à cette formule tu peux connaitre la liste complete de tous les matchs possibles.
Cependant il est impossible d'effectuer tous les match en deux jours si chacune des equipe ne peut jouer qu'une seule fois par jour. Dans ton exemple tu as oublier le match A-D, tu le met ou ?
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
28 mai 2005 à 04:08
merci pour la réponse mais on sais pas bien compris

1/ soit nCp règle peut être mon problème mais moi j'ai déjà touvé ma
formule pour le nombre de match possible soit Nx(N-1) /2
pour les matchs en aller simple et Nx(N-1) pour les matches en aller
retour avec N= nombre d'équipe

2/ il n'a jamais été question de faire ça en 2 journée c'étais un
example pour expliquer ce que je voulais il n'était donc pas complets
j'ai aussi ma forlume pour trouver le nb de journée soit:
2N-2 c'est le nombre de journée pour un championat aller
retour il va du bon sens que le nombre de journée aller est N-1



donc je reformule ma question:

comment obtenir la matérialisation de nCp ou de Nx(N-1) /2 donc tous les cas possible

je vais le faire pour 4 équipes mais je demande un algo qui est général:

soit 4équipes : nice ,psg,nante,lyon

jai donc nbrtotal de mach= 4*3=12 total de match aller=12/2=6 nb de journée=6 et à l'aller 3 ,nbr de match par journée=N/2=2

voici une situation des 3 journées:



journé1
journée
2
journée 3



nice -
psg
nice -
nante
nice - lyon

Lyon-nante
psg-Lyon
psg-nante



ça je l'ai fait à vu d'oeil le problème c'est que je veux un algo j'en
fais des 10aine mais il y a toujours une érreur quelqu'un peu m'aidé?

sachant que j'ai déja rangé les 6 match possible dans un tableau le
seul problème est de répartir ces 6 matchs en 3journée (plus
généralement c'est xmatch en y journée) sans qu'aucune équipes ne joue
2 fois dans la même journée et sans qu'aucun match n'apparaisse 2 fois
voici pon tableau :

tbmatch[6]={1,2,3,12,13,23} avec 1 signifi 0 contre 1

2= 0 contre 2 ..... 23= 2 contre 3

pour les retrouvé: équipe a= tbmatch[i]/10;équipe b= tbmatch[i]%10



dans notre cas si nice=0 psg1,lyon 2 et nante 3

la question est comment obtenir le tableau suivant: calendrier[6]={1,23,3,12,2,13}c'est la copy des 3 journées dans un tableau.



j'espère que cette fois il n'y a pas d'anbiguité sur mon problème
et que vous aurez compris où se trouvent mes difficultés?
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
28 mai 2005 à 15:57
bon après quelques corrections sur mes algo déjà présent j'ai enfin
trouvé je vous prénsenterai le résultat dans ma prochaine source
(probablement pour Pocket PC) mais n'hésité pas si vous avez des algos
à me proposer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
28 mai 2005 à 21:51
Je tiens à rappeler que si Nice joue 3 fois de suite à domicile ça risque de faire chier le championnat lol


void Aurevoir( void ); //Bonne journée
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
28 mai 2005 à 22:29
lol c'est vrai mais une fois le calendrier bien défini il est facile de régler cette histoire de domicile extérieur.

sinon viva le FCNA tous avec Nante
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
29 mai 2005 à 21:21
j'entends par 'pivoter' faire tourner les nombres ds le sens des
aiguilles d'une montre. (ca marche aussi dans l'autre sens hein,
l'important et qu'on déduise chaque journée de la précedente en gardant
le meme sens)
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
30 mai 2005 à 13:21
Mon algo à moi est beacoup plus compliqué que le tiens je vais donc
opter pour le tien merci beaucoup je gagne énormément de temps.
0
Rejoignez-nous