Private Sub permutation() Dim binary As String Dim number As Long Dim startnum As Long Dim beginnum As String Dim digitpos As Long Dim countdigit As Long Dim pos As Long Dim permut() As String Dim countpermut As Long Dim n As Long Dim k As Long n = 22 k = 6 countpermut = 0 startnum = startnum.ToString.PadLeft(k + 1, "1"c) beginnum = Str(startnum) beginnum = Trim(Mid(beginnum, 1, Len(beginnum) - 1)) startnum = Convert.ToInt32(beginnum, 2) For number = startnum To 2 ^ n binary = Convert.ToString(number, 2) If Len(binary) >= k Then 'au moins que binary a k chiffres countdigit = 0 'compte les "1" dans binary For pos = 1 To Len(binary) digitpos = InStr(pos, binary, "1", CompareMethod.Text) If digitpos = pos Then countdigit = countdigit + 1 End If Next If countdigit = k Then 'ajoutes les "0" devant If Len(binary) < n Then binary = binary.ToString.PadLeft(n, "0"c) End If ReDim Preserve permut(countpermut) permut(countpermut) = binary countpermut = countpermut + 1 End If End If Next End Sub
Private Sub permutation() Dim binary As String Dim prefix As String Dim number As Long Dim startnum As Long Dim iter As Integer Dim beginnum As String Dim digitpos As Long Dim countdigit As Long Dim pos As Long Dim permut() As String Dim countpermut As Long Dim n As Long Dim k As Long n = 6 k = 3 countpermut = 0 'calcul du plus petit nombre binaire formé de ' k 1 par ex si k 5 donc 11111 binaire 31 ' ou 32 -1 donc 2^5 - 1 startnum = 2 ^ k - 1 For number = startnum To 2 ^ n binary = GetBinary(number) If Len(binary) >= k Then 'au moins que binary a k chiffres countdigit = 0 'compte les "1" dans binary For pos = 1 To Len(binary) digitpos = InStr(pos, binary, "1", 1) If digitpos = pos Then countdigit = countdigit + 1 End If Next If countdigit = k Then 'ajoutes les "0" devant prefix = "" If Len(binary) < n Then For iter = 0 To n - Len(binary) - 1 prefix = prefix & "0" Next End If binary = prefix & binary ReDim Preserve permut(countpermut) permut(countpermut) = binary countpermut = countpermut + 1 End If End If Next End Sub
Private Function GetBinary(ByVal number As Long) As String 'conversion en binaire Dim mybinary As String mybinary = "" While number > 0 mybinary = mybinary & number Mod 2 number = number \ 2 Wend GetBinary = StrReverse(mybinary) End Function
Private Sub permutation() Dim binary As String Dim number As Integer Dim digitpos As Integer Dim countdigit As Integer Dim pos As Integer Dim permut() As String Dim countpermut As Integer Dim n As Integer Dim k As Integer n = 6 k = 3 countpermut = 0 ' loop sur tous les nombres binaires de n chiffre For number = 0 To 2 ^ n binary = Convert.ToString(number, 2) If Len(binary) >= k Then 'au moins que binary a k chiffres countdigit = 0 'compte les "1" dans binary For pos = 1 To Len(binary) digitpos = InStr(pos, binary, "1", CompareMethod.Text) If digitpos = pos Then countdigit = countdigit + 1 End If Next If countdigit = k Then 'ajoutes les "0" devant If Len(binary) < n Then binary = binary.ToString.PadLeft(n, "0"c) End If ReDim Preserve permut(countpermut) permut(countpermut) = binary countpermut = countpermut + 1 End If End If Next End Sub
Private Sub permutation() Dim binary As String Dim number As Long Dim startnum As Long Dim beginnum As String Dim digitpos As Long Dim countdigit As Long Dim pos As Long Dim permut() As String Dim countpermut As Long Dim n As Long Dim k As Long n = 20 k = 6 countpermut = 0 ' loop sur tous les nombres binaires de n chiffre startnum = startnum.ToString.PadLeft(k, "1"c) beginnum = Str(startnum) beginnum = Mid(beginnum, 1, Len(beginnum) - 1) beginnum = Convert.ToInt32(beginnum) For number = beginnum To 2 ^ n binary = Convert.ToString(number, 2) If Len(binary) >= k Then 'au moins que binary a k chiffres countdigit = 0 'compte les "1" dans binary For pos = 1 To Len(binary) digitpos = InStr(pos, binary, "1", CompareMethod.Text) If digitpos = pos Then countdigit = countdigit + 1 End If Next If countdigit = k Then 'ajoutes les "0" devant If Len(binary) < n Then binary = binary.ToString.PadLeft(n, "0"c) End If ReDim Preserve permut(countpermut) permut(countpermut) = binary countpermut = countpermut + 1 End If End If Next End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question