Permutation de chiffre par procédure récursive
Bonjour à tous,
Je viens vers vous aujourd'hui car je souhaite coder en VBA un algorithme pour générer l'ensemble des populations d'un ensemble de n chiffres. Exemple de résultat souhaité de 4 chiffres 1234 en PJ. Je précise que les chiffres sont forcément dans l'ordre en partant de 1 mais on peut aussi les traiter comme du texte.
J'ai essayé d'évaluer le problème de mon côté. Pour chaque position on a n!/n répétition du chiffre (en position 1 le chiffre 1 se répète 4!/4 soit 24/4=6)
Est-ce que vous auriez connaissance d'un sujet sur le forum parlant de cela. Car je ne trouve que des heuristiques où les gens génèrent de façon aléatoire ces permutations. ça marche mais il y a beaucoup de déchet et c'est juste que j'aimerai apprendre à le faire en récursif.
Merci beaucoup du temps que vous pourrez m'accorder et pour votre matière grise
Bonne soirée
En fait c'est bon j'ai trouvé :) Merci
Sub Test()
Dim Tbl()
Dim T
Dim I As Integer
Dim J As Long
Dim Chaine As String
T = Array("A", "B", "C", "D", "E", "F")
For I = 0 To UBound(T): Chaine = Chaine & T(I): Next I
Permuter Chaine, "", Tbl, J
Columns(1).Clear
Range(Cells(1, 1), Cells(UBound(Tbl), 1)).Value = Application.Transpose(Tbl)
End Sub
Sub Permuter(Chaine As String, Debut As String, Tbl(), J As Long)
Dim I As Integer
If Len(Chaine) = 1 Then
J = J + 1: ReDim Preserve Tbl(1 To J)
Tbl(J) = Debut & Chaine
Else
For I = 1 To Len(Chaine)
Permuter Mid(Chaine, 2, Len(Chaine) - 1), Debut & Left(Chaine, 1), Tbl, J
Chaine = Mid(Chaine, 2, Len(Chaine) - 1) & Left(Chaine, 1)
Next
End If
End SubJe mets le code ici si jamais les gens le cherche.
Merci et désolé d'encombrer le forum