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

Mathématiques Discussion :

[VBA] Toutes les combinaisons dans l'ordre et le désordre


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Points : 57
    Points
    57
    Par défaut [VBA] Toutes les combinaisons dans l'ordre et le désordre
    Bonjour,

    Je chercherais le moyen de trouver toutes les combinaisons possibles (dans l'ordre et le désordre) que je peux faire à partir d'un array de N objet, sauf ceux qui sont identiques de gauche à droite et de droite à gauche, j'en veux qu'un seul.

    Par exemple avec { obj0, obj1, obj2 }, je voudrais créer les arrays suivant:


    { obj0 }
    { obj0, obj1 }
    { obj0, obj2 }
    { obj0, obj1, obj2 }
    { obj0, obj2, obj1 }

    { obj1 }
    { obj1, obj0 }
    { obj1, obj2 }
    { obj1, obj0, obj2 }
    { obj1, obj2, obj0 }

    { obj2 }
    { obj2, obj1 }
    { obj2, obj0 }
    { obj2, obj0, obj1 }
    { obj2, obj1, obj0 }

    En fait, ceux qui sont barrés, ça me dérange pas qu'ils apparaissent si ça simplifie le code. L'important n'est pas tant la performance que le fait que ce soit simple à comprendre. J'aurai rarement plus de 5 ou 6 items. Si ça se rend à 12, je patienterai plus.

    S.v.p tenir compte que je dois faire ça en VBA.

    En fait, si j'élabore encore plus, les objets sont des points. Je veux pouvoir créer tous les polygones simples possibles avec ces points dont tous les autres points sont à l'intérieur. Il y a aussi une autre variables qui fait que j'ajoute 2 ou 3 points à chacun des polygones dont leurs coordonnées sont variables et dépendent du premier et dernier point du polygone initial. Quoiqu'il en soit, si je peux faire toutes les combinaisons possibles, je pourrai gérer après si le polygone formé est valide ou non.

    Merci

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Salut. Imaginons que tu saches construire une telle liste de tableau pour N items :
    [
    {A, B, C},
    {B, C, A},
    ...
    ]
    Pour construire une liste similaire pour N+1 items, il suffit, pour chaque tableau de ta liste (dans l'exemple, pour chaque ligne), d'insérer le N+1-ième item à chaque emplacement possible :
    [
    {D, A, B, C},{A, D, B, C},{A, B, D, C},{A, B, C, D},
    {D, B, C, A},{B, D, C, A},{B, C, D, A},{B, C, A, D},
    ...
    ]

    Ainsi, du fait que tu n'as qu'un faible nombre d'items, je propose une solution récursive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    fonction arrangements(l : liste d'item)
    Si taille de l = 1 Alors
       retourner l
    Sinon
       Soient tete : item et queue : liste d'item telles que tete+queue=l
       Soit resultat : liste de (liste d'item)
       l' = arrangements(queue)
       Pour chaque liste arrangement de l'
          Pour chaque item i de arrangement
             Ajouter la liste arrangement[0..i-1]+tete+arrangement[i..fin] à resultat
          Fin Pour
       Fin Pour
       retourner resultat
    Fin Si

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Points : 57
    Points
    57
    Par défaut
    Hmmm malheureusement je ne sais pas faire la première étape. Et j'ai de la misère à suivre ton pseudocode. Par contre, ton explication m'aide un peu à comprendre la logique que je devrais envisager, je vais réfléchir davantage à tout ça.

  4. #4
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Quelle première étape ?

    Si d'une part tu sais résoudre ton problème pour un unique objet, et
    si d'autre part à partir de la résolution pour N objets tu sais résoudre pour N+1 objets,

    alors, tu sais résoudre le problème dans tous les cas. C'est ce qu'on appelle de la récursivité. Je te conseille une petite recherche à partir de ce mot.

    Cdlt,

  5. #5
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Et MERCI ça ne serait pas de trop !

Discussions similaires

  1. Stocker dans un tableau toutes les combinaisons possibles entre plusieurs tableaux.
    Par gui-yem dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 19/03/2014, 15h22
  2. Réponses: 1
    Dernier message: 22/07/2007, 22h07
  3. retouver toute les combinaison
    Par sami_c dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 22/03/2006, 20h09
  4. Lister toutes les combinaisons...
    Par monstroplante dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 04/11/2005, 21h10
  5. Réponses: 2
    Dernier message: 17/06/2005, 23h03

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