Bonjour,

J'aimerai développer une méthode me permettant de "distribuer" des voyelles dans une liste... mais je bloque !

j'ai ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
        enum Voyelles
        {
            A = 0,
            E = 1,
        }
 
 
            List<String> lstTest = new List<String>();
            lstTest.Add("B");
            lstTest.Add("C");
            lstTest.Add("D");
J'aimerai obtenir en sortie une List<List<String>> qui aurait comme listes :

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
 
 
            List<List<String>> sortie = new List<List<string>>();
            List<String> lst1 = new List<String>();
            lst1.Add("B");
            lst1.Add("C");
            lst1.Add("D");
            lst1.Add("A");
 
            List<String> lst2 = new List<String>();
            lst1.Add("B");
            lst1.Add("C");
            lst1.Add("A");
            lst1.Add("D");
            lst1.Add("A");
            //...
            sortie.Add(lst1);
            sortie.Add(lst2);
            //...
De tel sorte que l'enum (les voyelles) forme toutes les combinaison possible, sauf qu'une voyelle doit être à coté de consonnes (ou une seule si en bout de chaîne), autrement dit il ne doit pas y avoir 2 voyelles à coté.

Voici un exemple de résultat :

BCDA
BCADA
BACADA
ABACADA
BCDE
BCADE
BCADE
BACADE
ABACADE
...
BCAD
BACAD
ABACAD
BCED
BACED
ABACED
...
BACD
ABACD
EBACD
BECD
ABECD
EBECD
...
ABCD
EBCD
(il n'y a pas toutes les combinaisons dans cet exemple)

Chaque ligne représente une Liste<String> où chaque lettre est dans un String. (j'ai volontairement simplifier mon problème)

Si vous avez des pistes à me donner ? J'ai commencé une méthode récursive mais je n'arrive pas au bon résultat.

Merci

édit: attention, ma liste de départ peut contenir de 1 à N élément (beaucoup)