Problème de " Noeuds "

Bonjour,

J’ai un tableau variable en nombre de lignes et en nombre de colonnes pas toutes remplies, de signes tous différents, par exemple ceci :

E

H B

A F C

G

D

Il faut en tirer des combinaisons (de largeur variable) avec les permutations possibles quand il y a plusieurs colonnes sur une ligne (ici lignes 2 et 3).

Combinaisons dans l’ordre d’apparition. Par exemple EHAG, pas HEAG

Voici les 23 combinaisons pour une largeur de 4 éléments.

EHAG EHAD EHFG EHFD EHCG EHCD EHGD EBAG EBAD EBFG EBFD EBCG EBCD EBGD EAGD EFGD ECGD HAGD HFGD HCGD BAGD BFGD BCGD

Rappel : une combinaison, donnée dans l'ordre ou le désordre, est la même. Sinon, il s'agit d'une permutation. D'ailleurs Excel possède deux fonctions Combin et Permut permettant de calculer le nombre de possibilités dans un tableau

Je vous invite à regarder cet excellent fichier illustrant la différence entre les deux : https://www.cjoint.com/c/GKomb78IuZS

Notez que ce sont ici des lettres pour que ce soit plus lisible, mais en pratique ce sont des nombres.

N'arrivant pas à trouver une logique, j'ai demandé de l'aide à une connaissance, mais il développe en JavaScript. Voilà sa solution : https://jsfiddle.net/ob5jzLLf/9/

Explication du concepteur : « On considère chaque élément comme un nœud : chacun possède une valeur (la lettre), un niveau (le numéro de ligne), et des enfants.

Donc en récursif on remplit un tableau ("list") filtré pour garder les éléments qui font 4 caractères »

Il faut aussi avoir à l'esprit que cette liste sera expurgée lorsque des duos, triplets, ... se retrouveront dans les combinaisons. Par exemple, "EH' et "AGD" limitera la liste à EBAG EBAD EBFG EBFD EBCG EBCD EBGD EFGD ECGD HFGD HCGD BFGD BCGD

Étant donné l'énorme quantité de combinaisons qui peut être générée à partir un tableau de départ plus fourni, ce filtre doit être implémenté au moment de la génération, pas après.

Mon problème est que je n'ai aucune expérience dans les modules de classe et que je ne sais pas trop comment implémenter cela.

Je vous demande donc d'au moins me mettre le pied à l'étrier. Et si vous avez une autre solution, pourquoi pas

Merci,

Blaise

Bonjour,

une proposition

introduire les valeurs à partir de A1. supprimer les lignes des combinaisons générées (s'il y en a). lancer la macro via ALT-F8

Wouah !

Rapide, direct et exact !

Merci l'ami !

Rechercher des sujets similaires à "probleme noeuds"