IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Création du calendrier sportif avec 30 équipes [Sources]


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Création du calendrier sportif avec 30 équipes
    Bonjour à tous,

    Je découvre ce forum, et je cherche de l'aide.
    Voilà, je souhaite créer un concours sur mon site sous forme de championnat matches aller/retour.
    Il y aura 30 équipes.
    Donc 58 journées.
    Comment et avec quels outils puis-je créer facilement une liste de toutes les rencontres ?

    Y a t-il un site web qui peu faire cela en ligne et l'on récupère les données ?

    Merci de votre aide.

    NB/ je travaille sous MAC X 10.9, donc aucun logiciel PC ne peut tourner dessus.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Personne ne peux m'aider ? Quel était l'ago proposé par jmv ?

    Merci

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Bonjour,

    je travaille en ce moment sur ce genre de problème, mais je cherche à gérer dynamiquement tant de paramètres que je me trouve face à un problème np-complet.

    Rassures-toi, dans ton cas précis, c'est très simple. De mémoire, l'algo de JMV ressemblait à peu près à ça (désolé, je ne vais pas l'écrire de façon trop conventionnelle, mais cela restera compréhensible ) :

    Les variables :

    Equipe1 --> numérique (valeur par défaut = 0)
    Equipe2 --> numérique (valeur par défaut = 0)
    Journée --> numérique (valeur par défaut = 0)
    Equipes --> numérique (valeur par défaut = nombre d'équipe (+1 si ce nombre est impair))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    TANT QUE Equipe1 < Equipes  FAIRE
      Equipe1 = Equipe1 + 1
      Equipe2 = Equipe1 + 1
     
      TANT QUE Equipe2 < Equipes + 1 FAIRE
     
          TANT QUE "Equipe1 joue dans Journée" OU "Equipe2 joue dans Journée"  FAIRE
     
            Journée = (Journée + 1) MODULO (Equipes - 1)
     
          FIN TANT QUE
     
          Enregistrer le match "Equipe1 contre Equipe2 dans Journée" 
          Equipe2 = Equipe2 + 1
          Journée = (Journée + 1) MODULO (Equipes - 1) 
     
      FIN TANT QUE
     
    FIN TANT QUE
    IMPORTANT : le nombre de journées démarre à 0. Donc à la fin de l'algo il faut incrémenter de 1 la valeur de chaque journée enregistrée.

    Cet algo ne fonctionne qu'avec Equipe est un entier pair et ne fournit les matchs que pour un tour mais il est très simple de faire le deuxième tour !

    Pour générer les matchs d'un nombre d'équipe impair, ajouter une équipe fictive (par exemple pour 7 équipes, la variable Equipe vaudra 8 ), et ne pas tenir compte des matchs joués par l'équipe 8.

    Cet algo fonctionne très bien.

    Exemple d'implémentation en VB.NET
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
        Structure Match
            Dim ID As Integer
            Dim Journée As Integer
            Dim Domicile As Integer
            Dim Visiteur As Integer
        End Structure
     
        Function GénérerCalendrier(ByVal nombreEquipes As Integer) As List(Of Match)
     
            Dim équipe1, équipe2, journée As Integer
            Dim nbEquipes = If(nombreEquipes Mod 2 = 0, nombreEquipes, nombreEquipes + 1)
            Dim nbMatchsAller = CInt((((nbEquipes - 1) * nbEquipes) / 2))
            Dim matchs As New List(Of Match)(nbMatchsAller)
     
            While équipe1 < nbEquipes
                équipe1 += 1
                équipe2 = équipe1 + 1
                While équipe2 < nbEquipes + 1
     
                    While (From m In matchs _
                           Where m.Journée = (journée - 1) _
                           AndAlso ((m.Domicile = équipe1) _
                                    OrElse (m.Domicile = équipe2) _
                                    OrElse (m.Visiteur = équipe1) _
                                    OrElse (m.Visiteur = équipe2))).Count > 1
                        journée = (journée + 1) Mod (nbEquipes - 1)
                    End While
                    matchs.Add(New Match() With {.Journée = journée + 1, _
                                                 .Domicile = équipe1, _
                                                 .Visiteur = équipe2})
                    équipe2 += 1
                    journée = (journée + 1) Mod (nbEquipes - 1)
     
                End While
            End While
     
            Dim i = 1
            For Each m In (From item In matchs Order By item.Journée, item.Domicile)
                If nombreEquipes = nbEquipes _
                OrElse (m.Domicile <> nbEquipes _
                AndAlso m.Visiteur <> nbEquipes) Then
                    m.ID = i
                    i += 1
                    Debug.Print(String.Format("Match {0}, Journée {1} : Equipe {2} vs Equipe {3}", m.ID, m.Journée, m.Domicile, m.Visiteur))
                End If
            Next
     
            Return matchs
     
        End Function
    (\ _ /)
    (='.'=)
    (")-(")

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci tellllllllllllllement

    Je n'ai plus qu'à nettoyer tout cela, et mon calendrier est prêt.

    Bravo pour tes explications claires.

    amicalement.

  5. #5
    Membre à l'essai
    Inscrit en
    février 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Je ressort ce vieux topic du fond du tiroir en espérant que vous pourrez m'aider.
    Je dois moi aussi générer un calendrier de rencontre de ce type mais je bute dans un endroit de l'algorithme.
    En effet je ne comprend pas le :
    SI "Equipe1 ne joue pas dans Journée" ET "Equipe2 ne joue pas dans Journée" FAIRE
    Enregistrer le match "Equipe1 contre Equipe2 dans Journée"
    Equipe2 = Equipe2 + 1
    FIN SI


    En réalité je n'arrive pas à le codé.
    Ce que je comprend c'est que si l'equipe1 a déjà joué ou l'équipe 2 aussi alors n'entre pas dans le test. Mais comment savoir si ces équipes ont déjà joué dans la journée avant d'avoir mis préalablement les info précédente dans un tableau ?
    De plus si jamais on n'entre pas dans le SI, equipe2 n'est jamais modifié et donc c'est une boucle infinie non ?
    Je suis sur que la solution est simple mais j'avou que je bloque

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer calendrier sportif avec conditions
    Par sebastiano dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 13/10/2010, 13h21
  2. Réponses: 2
    Dernier message: 27/07/2004, 14h38
  3. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  4. création base de données avec easyphp
    Par Battosaiii dans le forum Débuter
    Réponses: 5
    Dernier message: 29/06/2004, 18h50
  5. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo