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 :

Algorithme pour établir un ordre de passage


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut Algorithme pour établir un ordre de passage
    Bonjour,

    Je cherche à développer sous excel un algorithme me permettant d'établir l'ordre de passage d'un concours d'équitation.
    Je souhaiterai premièrement avoir un algorithme en "français".

    J'ai essayé personnellement de le créer mais cependant je n'y parviens pas. En effet, les conditions pour créer cet ordre de passage sont assez complexes :
    -Un cavalier peut faire jusqu'à 3 passages avec des chevaux différents ; il ne peut donc pas passer 3 fois d'affilé (sauf si il est tout seul....), puisque celui ci doit s'échauffer avec son cheval à chaque fois.
    -Un cheval peut avoir jusqu'à trois cavaliers mais ne peut pas passer deux fois d'affilé (sauf si même cheval pour tous les cavaliers...), puisque celui-ci doit également pouvoir souffler entre deux cavaliers....

    Le nombre de participants et chevaux par épreuve peut être assez conséquent. De ce fait, j'aimerai automatisé ce casse tête dont j'ai à faire à chaque concours...

    Je vous remercie par avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 201
    Par défaut
    J'essaie d'évaluer la complexité.

    Imaginons 20 cavaliers, et 3 passages par cavalier.
    A priori, on a au moins 20 chevaux, parce que chaque cheval doit être monté par 3 cavaliers maximum.
    Donc les contraintes ne semblent pas trop pesantes.
    Et la difficulté, c'est plus de choisir une solution parmi toutes les solutions disponibles, et non pas trouver une disposition magique qui fonctionne.

    Et du coup, comme il y a plein de solutions, il faut aussi faire en sorte que la solution retenue soit 'équilibrée'. Le problème n'est pas qu'il y a trop de contraintes, mais qu'il n'y a pas assez de contraintes.

    Si on a 20 cavaliers et 20 chevaux, qui décide les 3 chevaux associés à chaque cavalier ? C'est déjà imposé avant de commencer notre travail de 'planification', ou c'est libre ?

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 477
    Par défaut
    salut

    une solution simple
    tu fait un tableau

    Nb max Cavalier =Max(A2:A255)
    1 2 3
    1 =($A3+B$2)-(QUOTIENT(($A3+B$2);$B$1+1)*$B$1) =($A3+C$2)-(QUOTIENT(($A3+C$2);$B$1+1)*$B$1) =($A3+D$2)-(QUOTIENT(($A3+D$2);$B$1+1)*$B$1)
    2 =($A4+B$2)-(QUOTIENT(($A4+B$2);$B$1+1)*$B$1) =($A4+C$2)-(QUOTIENT(($A4+C$2);$B$1+1)*$B$1) =($A4+D$2)-(QUOTIENT(($A4+D$2);$B$1+1)*$B$1)
    ...
    50 =($A52+B$2)-(QUOTIENT(($A52+B$2);$B$1+1)*$B$1) =($A52+C$2)-(QUOTIENT(($A52+C$2);$B$1+1)*$B$1) =($A52+D$2)-(QUOTIENT(($A52+D$2);$B$1+1)*$B$1)

    j'ai pris un exemple avec cinquante cavalier mais comme tu peut le constater la formule ne change pas beaucoup
    en fait il suffit de la recopier de cellule en cellule
    dans mon exemple le max est le nombre de cavalier j'ai supposé que le nombre de cavalier correspondait au nombre de cheval

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    une solution simple
    tu fait un tableau

    Nb max Cavalier =Max(A2:A255)
    1 2 3
    1 =($A3+B$2)-(QUOTIENT(($A3+B$2);$B$1+1)*$B$1) =($A3+C$2)-(QUOTIENT(($A3+C$2);$B$1+1)*$B$1) =($A3+D$2)-(QUOTIENT(($A3+D$2);$B$1+1)*$B$1)
    2 =($A4+B$2)-(QUOTIENT(($A4+B$2);$B$1+1)*$B$1) =($A4+C$2)-(QUOTIENT(($A4+C$2);$B$1+1)*$B$1) =($A4+D$2)-(QUOTIENT(($A4+D$2);$B$1+1)*$B$1)
    ...
    50 =($A52+B$2)-(QUOTIENT(($A52+B$2);$B$1+1)*$B$1) =($A52+C$2)-(QUOTIENT(($A52+C$2);$B$1+1)*$B$1) =($A52+D$2)-(QUOTIENT(($A52+D$2);$B$1+1)*$B$1)

    j'ai pris un exemple avec cinquante cavalier mais comme tu peut le constater la formule ne change pas beaucoup
    en fait il suffit de la recopier de cellule en cellule
    dans mon exemple le max est le nombre de cavalier j'ai supposé que le nombre de cavalier correspondait au nombre de cheval
    Merci pour votre contribution, cependant un cavalier ne monte pas forcément 3 chevaux et il peut y avoir autant de chevaux que de cavaliers :/

  5. #5
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    89
    Par défaut Précisions
    Citation Envoyé par maxime_nrgt Voir le message
    Un cavalier peut faire jusqu'à 3 passages avec des chevaux différents.
    Est-ce autant d’inscriptions ?
    Une inscription, c'est un cavalier et un cheval ?
    C'est quoi un passage ?

    Citation Envoyé par maxime_nrgt Voir le message
    Le nombre de participants et chevaux par épreuve peut être assez conséquent.
    L’ordre de passage doit être le même pour chaque épreuve, non ?

  6. #6
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    bonjour,
    un algo c'est bien ; ça permet de manipuler des données pour avoir un résultat …
    Mais ce qui est encore plus important est de bien définir les données que l'on va être amené à manipuler.
    Pour déterminer quelles données nous allons manipuler il faut être un peu plus précis sur ce que tu manipules (apparemment des chevaux, des jockeys, des passages, des créneaux horaires ?, …). Une fois que tout ça aura été dégagé on pourra passer aux algos.

    Par exemple, je suppose que tu as plusieurs créneaux qui vont te permettre de faire des passages (=jockey+cheval). Il y aura des contraintes à respecter, des associations à gérer (qui choisit le cheval lors d'un passage ? le jockey ? quelqu'un d'autre ?)



    Bref, il faut décrire plus précisément le déroulement d'un concours.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    bonjour,
    un algo c'est bien ; ça permet de manipuler des données pour avoir un résultat …
    Mais ce qui est encore plus important est de bien définir les données que l'on va être amené à manipuler.
    Pour déterminer quelles données nous allons manipuler il faut être un peu plus précis sur ce que tu manipules (apparemment des chevaux, des jockeys, des passages, des créneaux horaires ?, …). Une fois que tout ça aura été dégagé on pourra passer aux algos.

    Par exemple, je suppose que tu as plusieurs créneaux qui vont te permettre de faire des passages (=jockey+cheval). Il y aura des contraintes à respecter, des associations à gérer (qui choisit le cheval lors d'un passage ? le jockey ? quelqu'un d'autre ?)



    Bref, il faut décrire plus précisément le déroulement d'un concours.
    Il semblerait donc que je n'ai pas été assez précis dans mes explications. Pourtant, je le pensais !
    Je vais donc vous ré-expliquer les "règles de déroulement".

    Lors de concours équestres, il y'a plusieurs épreuves (telles qu'elles soient : des courses, des parcours de saut d'obstacles à différentes hauteurs.... etc)
    Les coachs engagent leurs cavaliers dans les différentes épreuves.

    Ainsi, il peut y avoir 1, 2, 50, 80, 100 inscriptions par épreuves. En sachant que : un cheval ne pourra faire que 3 tours maximum lors du concours et un cavalier 5 tours au maximum sur l'ensemble du concours. De plus, un même couple (cheval/cavalier) ne peut participer qu'une seule fois dans une épreuve. Par contre un cavalier peut concourir plusieurs fois dans une épreuves, et un cheval peut être monté par différents cavaliers dans une même épreuve.

    Je recherche donc un algorithme me permettant de "créer" l'ordre de passage d'une des ces épreuves en fonction des contraintes suivantes lorsque cela est possible :
    -On évite de faire passer un cavalier 2 fois d'affilé : celui-ci doit pouvoir s'échauffer avec des chevaux différents.
    -Idem pour le cheval; celui-ci devant pouvoir "souffler" entre deux épreuves

    Mais ces conditions ne peuvent s'appliquer que lorsqu'il y'a un nombre de participants assez conséquent.

    Il se peut que un même cavalier avec 2 chevaux différents participent à une épreuve. Dans ce cas, il sera numéro 1 avec un des chevaux et numéro 2 avec l'autre.... Mais dans le cas où un autre cavalier serait inscrit avec un cheval encore différents aux deux autres, alors celui-ci prendrait le numéro 2 et le premier cavalier aurait le numéro 1 & 3.

    J'ajoute que je ne recherche pas à faire un ordre sur l'ensemble du concours, mais bien sur une de ces épreuves du concours. La question du temps n'est pas concernée ici.

    J'espère avoir pu vous apporter quelques précisions pour m'aider...

    Je vous remercie pour votre aide et le temps que vous m'accordez!

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    de but en blanc :
    n'as-tu pas besoin de savoir si un cheval n'a pas participé à une autre épreuve avant de le faire concourir dans ton épreuve «pour qu'il puisse souffler» ? idem pour un cavalier ?

  9. #9
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    Citation Envoyé par maxime_nrgt Voir le message
    Je cherche à développer sous excel un algorithme me permettant d'établir l'ordre de passage d'un concours d'équitation.
    -Un cavalier peut faire jusqu'à 3 passages avec des chevaux différents ; il ne peut donc pas passer 3 fois d'affilé (sauf si il est tout seul....), puisque celui ci doit s'échauffer avec son cheval à chaque fois.
    un simple compteur déclaré en variable global peut suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Global Compteur As Integer
    rem apres dans le code
    Compteur=Compteur+1
    If Compteur >=3 Then 
    FaireQuelqueChose
    End If
    -Un cheval peut avoir jusqu'à trois cavaliers mais ne peut pas passer deux fois d'affilé (sauf si même cheval pour tous les cavaliers...), puisque celui-ci doit également pouvoir souffler entre deux cavaliers....
    Déclarer une classe globale dans un module de classe et avec une variable de type integer pour mémoriser le type de cheval ou même mieux employer des "string" qui mémorise le nom du cheval
    Citation Envoyé par maxime_nrgt Voir le message
    Le nombre de participants et chevaux par épreuve peut être assez conséquent. De ce fait, j'aimerai automatisé ce casse tête dont j'ai à faire à chaque concours...
    ?? Il suffit de faire un tableau de string ou mieux une collection de strings.
    Après on peut adresser chaque cellule du feuillet actif et lire la valeur

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    un simple compteur déclaré en variable global peut suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Global Compteur As Integer
    rem apres dans le code
    Compteur=Compteur+1
    If Compteur >=3 Then 
    FaireQuelqueChose
    End If
    Déclarer une classe globale dans un module de classe et avec une variable de type integer pour mémoriser le type de cheval ou même mieux employer des "string" qui mémorise le nom du cheval

    ?? Il suffit de faire un tableau de string ou mieux une collection de strings.
    Après on peut adresser chaque cellule du feuillet actif et lire la valeur
    merci pour votre participation. cependant, le problème a été résolu pus haut avec les 4 tableaux. je dois maintenant transformer cet algorithme sous excel

  11. #11
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    89
    Par défaut ATTENTION ! Jeu d’essai incomplet
    Citation Envoyé par maxime_nrgt Voir le message
    Le problème a été résolu plus haut avec les 4 tableaux.
    ATTENTION ! Mon jeu d’essai ne prévoit pas le cas d’un cavalier montant deux ou trois chevaux différents, eux-mêmes montés par un ou deux autres cavaliers. Cela dit, mon algorithme semble fonctionner dans ce contexte. Je sophistique mon jeu d'essai, je teste et je poste le résultat. À bientôt...

    Sinon, mon premier tableau est en quelque sorte prédigéré. Il résulte d’un premier tri sur la colonne NOM_CAVALIER pour affecter un N_CAVALIER et un N_ORDRE aux cavaliers montant plusieurs chevaux ; puis d’un second tri sur la colonne NOM_CHEVAL pour affecter un N_CHEVAL et un N_ORDRE aux chevaux montés par plusieurs cavaliers.

    PS : J'ai renommé mes colonnes et ajouté une colonne "NOM_CHEVAL", ce que j'aurais dû faire dès le départ ; mes colonnes N_CAVALIER et N_CHEVAL ne sont sans doute pas indispensables.



    2ème étape

    Avec un SGBD :

    • Après un tri sur NOM_CAVALIER, NOM_CHEVAL, il est possible d'affecter simultanément un N_CAVALIER et un N_ORDRE croissant pour chaque cavalier montant plusieurs chevaux différents.

    • Après un tri sur NOM_CHEVAL, NOM_CAVALIER, il est possible d'affecter simultanément un N_CHEVAL et un N_ORDRE croissant pour chaque cheval monté par plusieurs cavaliers différents.


    N_PASSAGE
    NOM_CAVALIER
    NOM_CHEVAL
    N_CAVALIER
    N_CHEVAL
    N_ORDRE
    Cavalier_A Cheval_A
    1
    1
    1
    Cavalier_A Cheval_B
    1
    2
    2
    Cavalier_A Cheval_C
    1
    3
    3
    Cavalier_B Cheval_D
    2
    4
    1
    Cavalier_C Cheval_D
    3
    4
    2
    Cavalier_D Cheval_D
    4
    4
    3
    Cavalier_E Cheval_E
    5
    5
    1
    Cavalier_E Cheval_F
    5
    6
    2
    Cavalier_F Cheval_G
    6
    7
    1

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut
    Citation Envoyé par APL-AML Voir le message
    ATTENTION ! Mon jeu d’essai ne prévoit pas le cas d’un cavalier montant deux ou trois chevaux différents, eux-mêmes montés par un ou deux autres cavaliers.

    Sinon, mon premier tableau est en quelque sorte prédigéré. Il résulte d’un premier tri sur la colonne CAVALIER pour affecter un N° ORDRE aux cavaliers montant plusieurs chevaux ; puis d’un second tri sur la colonne CHEVAL pour affecter un N° ORDRE aux chevaux montés par plusieurs cavaliers.
    c'est ce que je viens de me rendre compte en faisant plusieurs essais hélas.

  13. #13
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 477
    Par défaut
    salut

    pour palier a ce probleme
    il te faut une autre colonne définissant la position pour un cavalier

    c'est assez simple a mettre en place
    si l'Ancient cavaler et le meme que le cavalier precedent alors
    sa position = position +1
    sinon
    Position = 1

    ensuite tu tri par position cavalier et tu fait les traitements décrit avant

  14. #14
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    Citation Envoyé par maxime_nrgt Voir le message
    cependant, le problème a été résolu pus haut avec les 4 tableaux. je dois maintenant transformer cet algorithme sous excel
    mais non le problème n'a pas été résolu vous êtes en train de perdre votre temps à faire des tableaux totalement inutiles "à la main".
    Faire du code ça prend autant de temps que faire ce genre de tableau.
    Donc ce que je conseille de faire c'est de faire du code, j'en ai fait une ébauche quitte à le rectifier et à l'améliorer pour obtenir les bons résultats.
    Ensuite si vous voulez obtenir des tableaux de sortie des traitement de données afin de vérifier l'intégrité de l'ensemble des données c'est précisément l'intérêt de faire du code fonctionnel.
    Citation Envoyé par maxime_nrgt Voir le message
    Je viens de mettre à exécution l'algorithme, cependant, je me retrouve avec un même cavalier passant deux fois.
    cf pièce jointe
    sans code ne serait-ce que du pseudo-code ou bien sans organigramme minimum on ne peut pas voir ce qui pose problème.
    Faites-nous du code en Javascript ou en Java que tout le monde comprenne sur ce forum et on verra les problèmes de logique

  15. #15
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 14
    Par défaut

    Je viens de mettre tout cet algorithme sous code excel, cependant, des cavaliers apparaissent deux fois d'affilé dans l'ordre final de passage :/

  16. #16
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    89
    Par défaut N_ORDRE = Concaténation de N_CAVALIER et N_CHEVAL
    Citation Envoyé par Mat.M Voir le message
    Mais non le problème n'a pas été résolu. Vous êtes en train de perdre votre temps à faire des tableaux totalement inutiles "à la main".

    Faire du code ça prend autant de temps que faire ce genre de tableau.
    Donc ce que je conseille de faire c'est de faire du code, j'en ai fait une ébauche quitte à le rectifier et à l'améliorer pour obtenir les bons résultats.

    Ensuite si vous voulez obtenir des tableaux de sortie des traitements de données afin de vérifier l'intégrité de l'ensemble des données c'est précisément l'intérêt de faire du code fonctionnel.

    Sans code ne serait-ce que du pseudocode ou bien sans organigramme minimum on ne peut pas voir ce qui pose problème.

    Faites-nous du code en JavaScript ou en Java que tout le monde comprenne sur ce forum et on verra les problèmes de logique.
    Mes tableaux ne sont pas la solution mais la visualisation d’un algorithme théorique… quitte à le rectifier et à l'améliorer pour obtenir les bons résultats.

    Citation Envoyé par Mat.M Voir le message
    Sans code ne serait-ce que du pseudocode ou bien sans organigramme minimum on ne peut pas voir ce qui pose problème.

    Faites-nous du code en Javascript ou en Java que tout le monde comprenne sur ce forum et on verra les problèmes de logique.
    Chacun a sa façon de développer. J’ai besoin de comprendre visuellement les problèmes de logique avant de coder ou de faire un algorigramme.

    Par ailleurs, maxime_nrgt cherche à développer sous Excel un algorithme exprimé en "français". Que va-t-il faire d’un code en JavaScript ou en Java.

    Citation Envoyé par maxime_nrgt Voir le message
    Je viens de mettre à exécution l'algorithme, cependant, je me retrouve avec un même cavalier passant deux fois. cf pièce jointe
    Ton jeu d’essai a fait évoluer ma réflexion. Après beaucoup de tâtonnement, je propose un autre algorithme qui semble résoudre le problème. Il faudra voir à l’usage.



    ■ ■ ■ SOMMAIRE ■ ■ ■

    • Visualisation
      • 1ère étape : Renseigner N_CAVALIER
      • 2ème étape : Renseigner N_CHEVAL
      • 3ème étape : Renseigner N_ORDRE
      • 4ème étape : Renseigner N_PASSAGE
    • Conclusion
      • Version N° 1 : N_ORDRE = (N_CAVALIER * 10) + N_CHEVAL
      • Version N° 2 : N_ORDRE = (N_CHEVAL * 10) + N_ CAVALIER
    § 1. Visualisation

    J'ai conservé ma codification pour visualiser ma démarche. J'ai appliqué cette démarche sur le jeu d'essai de maxime_nrgt (voir son jeu d'essai à la fin de ce message).

    § 1.1. 1ère étape : Renseigner N_CAVALIER

    Tri : NOM_CAVALIER, NOM_CHEVAL

    Affecter un N_CAVALIER croissant de 1 à n aux cavaliers montant plusieurs chevaux

    N_PASSAGE
    NOM_CAVALIER
    NOM_CHEVAL
    N_CAVALIER
    N_CHEVAL
    N_ORDRE
    Cavalier_A Cheval_A
    1
    Cavalier_A Cheval_B
    2
    Cavalier_A Cheval_C
    3
    Cavalier_B Cheval_D
    1
    Cavalier_C Cheval_D
    1
    Cavalier_D Cheval_D
    1
    Cavalier_E Cheval_E
    1
    Cavalier_E Cheval_F
    2
    Cavalier_F Cheval_G
    1
    Cavalier_G Cheval_A
    1
    Cavalier_H Cheval_C
    1
    Cavalier_H Cheval_E
    2
    Cavalier_I Cheval_F
    1

    § 1.2. 2ème étape : Renseigner N_CHEVAL

    Tri : NOM_CHEVAL, NOM_CAVALIER

    Affecter un N_CHEVAL croissant de 1 à n aux cavaliers montant plusieurs chevaux

    N_PASSAGE
    NOM_CAVALIER
    NOM_CHEVAL
    N_CAVALIER
    N_CHEVAL
    N_ORDRE
    Cavalier_A Cheval_A
    1
    1
    Cavalier_G Cheval_A
    1
    2
    Cavalier_A Cheval_B
    2
    1
    Cavalier_A Cheval_C
    3
    1
    Cavalier_H Cheval_C
    1
    2
    Cavalier_B Cheval_D
    1
    1
    Cavalier_C Cheval_D
    1
    2
    Cavalier_D Cheval_D
    1
    3
    Cavalier_E Cheval_E
    1
    1
    Cavalier_H Cheval_E
    2
    2
    Cavalier_E Cheval_F
    2
    1
    Cavalier_I Cheval_F
    1
    2
    Cavalier_F Cheval_G
    1
    1

    § 1.3. 3ème étape : Renseigner N_ORDRE

    Tri : NOM_CHEVAL, NOM_CAVALIER

    N_ORDRE = concaténation N_CAVALIER et N_CHEVAL
    N_ORDRE = (N_CAVALIER * 10) + N_CHEVAL

    N_PASSAGE
    NOM_CAVALIER
    NOM_CHEVAL
    N_CAVALIER
    N_CHEVAL
    N_ORDRE
    Cavalier_A Cheval_A
    1
    1
    11
    Cavalier_G Cheval_A
    1
    2
    12
    Cavalier_A Cheval_B
    2
    1
    21
    Cavalier_A Cheval_C
    3
    1
    31
    Cavalier_H Cheval_C
    1
    2
    12
    Cavalier_B Cheval_D
    1
    1
    11
    Cavalier_C Cheval_D
    1
    2
    12
    Cavalier_D Cheval_D
    1
    3
    13
    Cavalier_E Cheval_E
    1
    1
    11
    Cavalier_H Cheval_E
    2
    2
    22
    Cavalier_E Cheval_F
    2
    1
    21
    Cavalier_I Cheval_F
    1
    2
    12
    Cavalier_F Cheval_G
    1
    1
    11

    § 1.4. 4ème étape : Numéroter N_PASSAGE

    Tri : N_ORDRE, NOM_CAVALIER

    Numéroter N_PASSAGE

    N_PASSAGE
    NOM_CAVALIER
    NOM_CHEVAL
    N_CAVALIER
    N_CHEVAL
    N_ORDRE (1)
    1
    Cavalier_A Cheval_A
    1
    1
    11
    2
    Cavalier_B Cheval_D
    1
    1
    11
    3
    Cavalier_E Cheval_E
    1
    1
    11
    4
    Cavalier_F Cheval_G
    1
    1
    11
    5
    Cavalier_C Cheval_D
    1
    2
    12
    6
    Cavalier_G Cheval_A
    1
    2
    12
    7
    Cavalier_H Cheval_C
    1
    2
    12
    8
    Cavalier_I Cheval_F
    1
    2
    12
    9
    Cavalier_D Cheval_D
    1
    3
    13
    10
    Cavalier_A Cheval_B
    2
    1
    21
    11
    Cavalier_E Cheval_F
    2
    1
    21
    12
    Cavalier_H Cheval_E
    2
    2
    22
    13
    Cavalier_A Cheval_C
    3
    1
    31

    § 2. Conclusion

    “ La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. ”

    Albert Einstein



    Citation Envoyé par maxime_nrgt Voir le message
    Je viens de mettre tout cet algorithme sous code excel, cependant, des cavaliers apparaissent deux fois d'affilé dans l'ordre final de passage.
    Peux-tu vérifier ce nouvel algorithme avec ton jeu d’essai, il semble que cela fonctionne. J’ignore pourquoi l’idée de concaténer N_CAVALIER et N_CHEVAL m’est venue à l’esprit.

    J’ai coloré différemment les cavaliers montant plusieurs chevaux et les chevaux montés par plusieurs cavaliers.

    § 2.1. Version N° 1

    N_ORDRE = (N_CAVALIER * 10) + N_CHEVAL

    Tri : N_ORDRE, NOM_CAVALIER

    Nom : maxime_nrgt.jpg
Affichages : 426
Taille : 54,5 Ko

    § 2.2. Version N° 2

    N_ORDRE = (N_CHEVAL * 10) + N_ CAVALIER

    Tri : N_ORDRE, NOM_CAVALIER

    Nom : maxime_nrgt (2).jpg
Affichages : 635
Taille : 54,3 Ko



Discussions similaires

  1. Quel algorithme pour classer des opérations par ordre de priorité
    Par verbose dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 16/06/2014, 11h11
  2. Quel algorithme pour insertion d'objets "triés" da
    Par phplive dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2005, 09h27
  3. Algorithme pour trier trois nombres
    Par legosam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 17/01/2005, 21h47
  4. quelle balise pour établir un lien interne
    Par christopher dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/12/2004, 13h48
  5. Algorithme pour chiffres significatifs en Assembleur
    Par lutin2003 dans le forum Assembleur
    Réponses: 5
    Dernier message: 09/09/2004, 10h47

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