Aide générateur de combinaison [Résolu]

Signaler
Messages postés
31
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
11 septembre 2011
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
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

9 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonsoir
avec l'aide de tous
 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

Messages postés
14800
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 juin 2021
156
Bonjour,

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


Mon site
Messages postés
95
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
28 novembre 2017

Salut,

à 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.

bon dév.


AlKa
Messages postés
14800
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 juin 2021
156
Bonjour,

Ma solution a pour avantage d'être plus souple, mais celle de AlKatou est plus simple.

A toi de choisir celle que tu veux.

Pour la conversion, voir avec :
Integer.Parse(txt, Globalization.NumberStyles.HexNumber)

Mon site
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut
en VB Net cela donne

dim i as integer
dim combinaison as string
redim combinaison (65536)
for i = 0 to 65535
combinaison(i) = i.toString("X4")
next i

Les 65536 combinaisons possibles sont dans le tableau combinaison

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
14800
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 juin 2021
156
Bonjour,

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

Mon site
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Ah oui encore mieux avec hexa = &hFFFF
je ne suis pas obligé de savoir que
&hFFFF = 65535 (16^4 -1)
Messages postés
31
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
11 septembre 2011

Merci à tous et donc si je veux stockés tous mes résultat dans une textbox je procède comment ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
avec une listbox
ListBox1.Items.Clear()
ListBox1.Items.AddRange(combinaison)