Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Resultados As List(Of List(Of Char))
Dim tx As String = TxtCombina.Text
Dim caracteres As List(Of Char)
Dim CombinacionCadena As String = vbNullString
Dim ListaAImprimir As New List(Of String)
caracteres = tx.ToList
Select Case tx.Length
Case 2
Resultados = Combina2(caracteres)
Case 3
Resultados = Combina3(caracteres)
Case 4
Resultados = Combina4(caracteres)
Case 5
Resultados = Combina5(caracteres)
Case 6
Resultados = Combina6(caracteres)
Case 7
Resultados = Combina7(caracteres)
Case 8
Resultados = Combina8(caracteres)
Case 9
Resultados = Combina9(caracteres)
Case 10
Resultados = Combina10(caracteres) '' hasta aqui lo probe con mi pc y funciona bien,
''20-30 segundos aprox, despues lo probe con 12 y es practicamente inutil para cualquier pc.
Case 11
Resultados = Combina11(caracteres) '' aqui son ya casi 40 millones de listas de caracteres
''con una longitud de 12 seran 479 millones de listas de caracteres de 12 caracteres
''cada lista lo que nos da un total de 5,748 millones de caracteres
End Select
''Mostrar los resultados...
For Each Combinacion In Resultados '' el imprimir los resultados en pantalla puede ser lento
CombinacionCadena = vbNullString
For i = 0 To Combinacion.Count - 1 '' por lo que recomiento que no lo hagas...
CombinacionCadena = CombinacionCadena & Combinacion(i).ToString
Next
ListaAImprimir.Add(CombinacionCadena)
Next
ListBox1.Items.AddRange(ListaAImprimir.ToArray)
End Sub
Function Combina11(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina10(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina10(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina9(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina9(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina8(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina8(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina7(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina7(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina6(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina6(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina5(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina5(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina4(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina4(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina3(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina3(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim ResultadoAnterior As List(Of List(Of Char))
Dim ElementosAnteriores As New List(Of Char)
Dim CaracterVariable As Char = vbNullChar
Dim Lista As List(Of Char)
Dim Vector() As Char
CaracterVariable = Elementos(0)
For i = 1 To Elementos.Count - 1
ElementosAnteriores.Add(Elementos(i))
Next
ResultadoAnterior = Combina2(ElementosAnteriores)
For i = 0 To Elementos.Count - 1
For Each ListaAnterior In ResultadoAnterior
Lista = New List(Of Char)
Vector = ListaAnterior.ToArray
Lista = Vector.ToList
Lista.Insert(i, CaracterVariable)
Resultado.Add(Lista)
Next
Next
Return Resultado
End Function
Function Combina2(ByVal Elementos As List(Of Char)) As List(Of List(Of Char))
Dim Resultado As New List(Of List(Of Char))
Dim Lista As List(Of Char)
Lista = New List(Of Char)
Lista.Add(Elementos(0))
Lista.Add(Elementos(1))
Resultado.Add(Lista)
Lista = New List(Of Char)
Lista.Add(Elementos(1))
Lista.Add(Elementos(0))
Resultado.Add(Lista)
Return Resultado
End Function
End Class