comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[TUTORIAL] Generador de diccionarios.

  • 0 Respuestas
  • 2131 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 79137913

  • *
  • Moderator
  • Mensajes: 635
  • Actividad:
    5%
  • Reputación 11
  • 4 Esquinas
    • Ver Perfil
    • Doors.Party
    • Email
  • Skype: fg_mdq@hotmail.com
« en: Mayo 28, 2013, 03:20:05 pm »
HOLA!!!

Este tutorial lo arme para explicar como hacer un generador de diccionarios como mi No tienes permisos para ver links. Registrate o Entra con tu cuenta

Empecemos...

Suponiendo que tenes esta cadena de posibles caracteres:
Código:

"ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz0123456789"

Es la mas comun y tiene 26+26+10 osea 62 caracteres correcto?
Eso yo recomendaria guardarlo en un Vector (array).

Para eso yo uso la funcion:
Código

Código: Visual Basic
  1. Private Function CharSplit7913(expression As String) As String()
  2.     Dim lExp     As Long
  3.     Dim ExpB()   As Byte
  4.     Dim AuxArr() As String
  5.     ExpB = expression
  6.     lExp = UBound(ExpB)
  7.     ReDim AuxArr(lExp)
  8.     For X = 0 To lExp Step 2
  9.         AuxArr(X / 2) = ChrW(ExpB(X))
  10.     Next
  11.     ReDim Preserve AuxArr(Int(lExp / 2))
  12.     CharSplit7913 = AuxArr
  13. End Function


El vector resultante suponete que lo llamamos Chars() queda compuesto asi:
Chars(0 to 61) : "A","B","C",...,"7","8","9".
Espero que hasta ahi me sigas.

En este punto solo tenemos en un Vector (array) guardados todos los caracteres que vamos a usar.

Ahora, solicitamos la longitud en este caso la guardaremos en la variable Tam (de tamaño)

Ahora vamos a crear un vector donde guardaremos la cadena actual, su index maximo sera tam-1.

Suponiendo que tam = 3

hacemos asi:

Código

Dim Palabra() as integer
'dentro del proceso de creacion de diccionario
Redim Palabra(Tam-1)


Aca lo que hicimos es hacer que Palabra quedara (0 to 2) inicializandose asi:
Palabra(0 to 2): 0,0,0

aca empieza el proceso de creacion de strings...

Código

Código: Visual Basic
  1. Dim AuxPalabra As String
  2. Do
  3.     AuxPalabra = 0
  4.     For X = 0 To tam - 1
  5.         AuxPalabra = AuxPalabra & chars(palabra(X)) ' aca concatenamos todas las letras
  6.    Next
  7.     Print AuxPalabra ' aca imprimo la palabra resultante.
  8.    palabra(0) = palabra(0) + 1 ' aca muevo un caracter
  9.    For X = 0 To UBound(palabra) - 1
  10.         If palabra(X) = UBound(chars) + 1 Then
  11.             'aca verificamos que ninguna casilla quede con un numero mayor a los
  12.            'caracteres que hay y si pasa eso aumenta la siguiente casilla
  13.            'y la actual se vuelve a 0
  14.            palabra(X + 1) = palabra(X + 1) + 1
  15.             palabra(X) = 0
  16.         End If
  17.         'esto de abajo es para ver cuando se termino el proceso
  18.        'osea cuando se han hecho todas las combinaciones.
  19.        If palabra(UBound(palabra)) = UBound(chars) + 1 Then Exit Do
  20.     Next
  21. Loop
  22.  

Entonces como te quedaria todo el codigo completo...

Código

Código: Visual Basic
  1. Dim Diccionario As String
  2. Dim chars() As String
  3. Dim Tam As Integer
  4. Dim Palabra() As Integer
  5. Private Sub Form_Load()
  6. 'aca en diccionario pone lo que quieras
  7. Diccionario = "ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz0123456789"
  8. chars = CharSplit7913(Diccionario)
  9. Tam = InputBox("inserte cantidad de caracteres")
  10. ReDim Palabra(Tam - 1)
  11. End Sub
  12.  
  13.  
  14. Private Sub InicioDeProceso()
  15. Dim AuxPalabra As String
  16.     Do
  17.         AuxPalabra = 0
  18.         For X = 0 To Tam - 1
  19.             AuxPalabra = AuxPalabra & chars(Palabra(X)) ' aca concatenamos todas las letras
  20.        Next
  21.         Debug.Print AuxPalabra ' aca imprimo la palabra resultante.
  22.        Palabra(0) = Palabra(0) + 1 ' aca muevo un caracter
  23.        For X = 0 To UBound(Palabra) - 1
  24.             If Palabra(X) = UBound(chars) + 1 Then
  25.                 'aca verificamos que ninguna casilla quede con un numero mayor a los
  26.                'caracteres que hay y si pasa eso aumenta la siguiente casilla
  27.                'y la actual se vuelve a 0
  28.                Palabra(X + 1) = Palabra(X + 1) + 1
  29.                 Palabra(X) = 0
  30.             End If
  31.             'esto de abajo es para ver cuando se termino el proceso
  32.            'osea cuando se han hecho todas las combinaciones.
  33.            If Palabra(UBound(Palabra)) = UBound(chars) + 1 Then Exit Do
  34.         Next
  35.     Loop
  36.     MsgBox "Proceso Terminado"
  37. End Sub
  38.  
  39. Private Function CharSplit7913(expression As String) As String()
  40.     Dim lExp     As Long
  41.     Dim ExpB()   As Byte
  42.     Dim AuxArr() As String
  43.         ExpB = expression
  44.         lExp = UBound(ExpB)
  45.         ReDim AuxArr(lExp)
  46.         For X = 0 To lExp Step 2
  47.             AuxArr(X / 2) = ChrW(ExpB(X))
  48.         Next
  49.         ReDim Preserve AuxArr(Int(lExp / 2))
  50.         CharSplit7913 = AuxArr
  51. End Function
  52.  

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scout Team*                                                   No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Tutorial] Explicando métodos de colores by Subzer. [VB6]

Iniciado por Subzer

Respuestas: 0
Vistas: 3484
Último mensaje Noviembre 11, 2012, 05:27:30 pm
por Subzer
[Tutorial] Aprende a programar con la Consola

Iniciado por Pekador

Respuestas: 2
Vistas: 7349
Último mensaje Junio 21, 2012, 03:06:40 pm
por Snifer
[TUTORIAL] Generador de diccionarios.

Iniciado por 79137913

Respuestas: 0
Vistas: 2368
Último mensaje Mayo 19, 2014, 02:39:12 pm
por 79137913