Bonjour à tous je cherche désespérément à réaliser un générateur de combinaison.
Je sais que cela est un truc tout bête mais je n'arrive pas à me le representer et donc à le programmer .
En effet j'aimerai qu'il me génére toutes les possibilités de combinaison .
Exemple je possède les lettres(A,B,C,D,E,F) et les chiffres (0,1,2,3,4,5,6,7,8,9) et je voudrais qu'il me génére toutes les combinaison possibles avec 4 caractères , c'est à dire.
AAAA
AAAB
AAAC
AAAD
....
AA0A
AA1A
AA1B
....
A0AA
A1AA
Voila j'espere que quelqu'un pourrai m'aider
Merci
A voir également:
Générateur de combinaison de mots
Générateur de combinaison lettres - Meilleures réponses
Dim i As Integer
Dim combinaison() As String
Dim hexa As Integer
Try
hexa = (Integer.Parse("FFFF", Globalization.NumberStyles.HexNumber))
ReDim combinaison(hexa)
For i = 0 To hexa
combinaison(i) = i.ToString("X4")
Next i
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Voici une suggestion, je ne l'ai pas testé, mais ça devrait fonctionner.
ça utilises la récursivité.
Private Function GenereCombinaison(byval pDigits as String(),byval pNbDigit as Integer) as String()
Dim ltCombis as new List(of String)
GetCombinaison(ltCombis,pDigits,pNbDigits,"")
Return ltCombis.ToArray
End Function
Private Sub GetCombinaison(Byval ptCombis as List(of String),byval pDigits as String(),byval pNbDigit as Integer,ByVal pPredecessor as string)
For Each lChar as String in pDigits
if pNbDigits=0 Then
ptCombis.Add(pPredecessor+lchar)
else
GetCombinaison(ptCombis,pDigits,pNbDigits-1,pPredecessor+lchar)
End if
Next
end sub
à regarder tes éléments lettres et chiffres, on constate que ceux sont les caractères de la notation héxadécimal. note que dans cette notation les chiffres sont plus petits que les lettres.
pour résoudre ton problème, il te faut donc balayer (boucler) des valeurs 0 (valeur hexa &h0000) à 65535 (valeur hexa &hFFFF). et faire un renvoi par l'instruction right("0000" & cstr(hex(i)), 4) où i est la variable de ta boucle.
maintenant, là c'est une instruction VB, donc si tu utilises du VB.net c'est à toi de l'adapter.
Si FFFF est toujours présent à cette valeur, à la place de :
hexa = (Integer.Parse("FFFF", Globalization.NumberStyles.HexNumber))
tu peux faire :
hexa = &hFFFF
ou hexa=65535