Generateur de mot à partir d'une chaine (recursive)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 577 fois - Téléchargée 35 fois

Contenu du snippet

ce code premet de generer de smot a partir d'une serie de lettre
ex : "abc" donne aaa, aab,aac,aba,abc etc ..

la fonction est une fonction recursive
l'avantage de cette source est que pour une chaine de 8 lettres, il n'y a pas besoin d'imbriquer 8 boucles

Maj la mise a jour permet de choisir le nombre de lettre en sorti
ex : abc avec 3,3 = aaa,aab,aac,aba etc ..
abc avec 3,2 = aa,ab,ac etc ..

ATTENTION : ce code de mande pas mal de memoire vive si l'on veut bcp de lettre

Voila
desole c'est du code vba donc pas d'interface

Source / Exemple :


Public Sub AppelleGeneMot()
Dim chaine As String
Dim PosLettre(1 To 3) As Integer 'initiale un tableau de n case pour un mot à n lettre
chaine = ""
PosLettre(1) = 1
PosLettre(2) = 1
PosLettre(3) = 1
'le premier chiffre correspond au nombre lettre de la chaine ex abc = 3
' le deuxieme correspond au nombre de lettre voulue en sortie ex 3= aaa,aab,aac 2=aa,ab,ac
GeneMot "abc", PosLettre, chaine, 3, 3
MsgBox chaine
End Sub
Public Function GeneMot(chaine As String, PosLettre As Variant, ch As String, LongeurChaine As Integer, nbLettreVoulue As Integer)

While PosLettre(1) < LongeurChaine + 1
    
    For l = 1 To nbLettreVoulue
        a = a & Mid(chaine, PosLettre(l), 1)
    Next l
    ch = ch & a & Chr(13)
    
    For m = nbLettreVoulue To 1 Step -1
        If PosLettre(m) = LongeurChaine Then
            If m <> 1 Then
                PosLettre(m) = 1
            Else
                PosLettre(m) = PosLettre(m) + 1
            End If
        Else
            PosLettre(m) = PosLettre(m) + 1
            Exit For
        End If
    Next m
    GeneMot chaine, PosLettre, ch, LongeurChaine, nbLettreVoulue
Wend
End Function

A voir également

Ajouter un commentaire

Commentaire

cs_Jyconaisrien
Messages postés
15
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
13 décembre 2010

Moi je suis toujours épaté par ce genre de progz en quelques lignes !!!
j' ai d ailleur honte de demandé ca mais vu mon pseudo , tu te doutes pourkoi.

Je me sert de ta source pour essayer de faire un générateur (pour mon boulot perso) et je voudrai generer par exemple :

sur une chaine de 13 lettres
avec seulement les lettre ab
toutes les combinaisons possible ex:

a b a b b a b a a b a b b
a b a b a a b a a b a b a
etc...
Bien sur j' y arrive pas
Pouvais vous m' aider merci bcp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.