Private Function MakeCombinaison(ByVal word As String) As List(Of String) 'combinaison de 1 2 3 4 5 6 7 8 ..N lettres ' si j'ai un chaine de N lettres j'ai donc 2^N -1 combinaisons ' mot 1 lettre = N!/((N-1)! * 1!) ' 2 lettres = N!/((N-2)! * 2!) ' 3 lettres = N!/((N-3)! * 3!) ' 4 lettres = N!/((N-4)! * 4!) ' 5 lettres = N!/((N-5)! * 5!) ' 6 lettres = N!/((N-6)! * 7!) ' 7 lettres = N!/((N-7)! * 7!) ' 8 lettres = N!/((N-8)! * 8!) ' N lettres = N!/((N-N)! * N!) ' pour obtenir toutes les combinaisons on se sert d'une boucle qui iter varie de 1 à 2^N -1 ' iter est converti en binaire et devancé par des 0 de façon à obtenir toujours N chiffres ' on remplace les 1 du nombre binaire par le caractère du meme index de la chaine ' on retire les 0 de la chaine Dim strbinary As String Dim binarydigit As Char() Dim list1 As New List(Of String) For iter = 1 To 2 ^ (word.Length) strbinary = Convert.ToString(Convert.ToInt32(iter), 2) strbinary = strbinary.PadLeft(word.Length, "0"c) binarydigit = strbinary.ToCharArray For iter2 = 0 To binarydigit.Length - 1 If binarydigit(iter2) = "1" Then binarydigit(iter2) = word(iter2) End If Next strbinary = binarydigit strbinary = strbinary.Replace("0", String.Empty) If strbinary.Length > 0 Then list1.Add(strbinary) End If Next list1 = list1.Distinct.ToList list1.Sort() Return list1 End Function Dim combinaison As New List(Of String) combinaison = MakeCombinaison("ABCDEFGHIJkLMNOPQRS")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question