FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Crear bucle de fuerza bruta con rango de caracteres
Hola amigos, estoy probando a ver si consigo que esta funcion funcione correctamente. Ya lo hace pero no me convence ya que uso algo de trampa para que funcione jejeje.
Lo que quiero es que cree una cadena de caracteres usando un rango y que vaya avanzando hasta crear todas las combinaciones posibles y que vaya comparando con otra cadena para ver si son iguales. Esto es lo que tengo hecho: Código PHP:
¿podeis ayudarme? Gracias por adelantado. |
#2
|
||||
|
||||
Usa strlen ().
|
#3
|
||||
|
||||
Bueno, lo he solucionado asi pero no me termina de convencer porque entra dos veces en el while que reajusta la cadena y eso en un algoritmo de fuerza bruta no es bueno:
Código PHP:
Ñuño strlen no me soluciona nada ya que uso AnsiString y uso Length() que es lo mismo. |
#4
|
||||
|
||||
Había leído mal. :/
|
#5
|
||||
|
||||
Fíjate en este código usando char* y funciones C:
Código PHP:
Saludos. |
#6
|
||||
|
||||
SI necesitas hacer una permutacion de caracteres encontre esto googleando:
http://www.geeksforgeeks.org/write-a...-given-string/ No es tan compacto como en python, pero me parecio muy simple de seguir (si quieres un ejemplo en python con lo cual testear rapido): http://stackoverflow.com/questions/8...ring-in-python
__________________
El malabarista. |
#7
|
||||
|
||||
Escafandra lo que tu me pones no es lo que deseaba hacer, tu lo que haces es comparar caracter por caracter y pasas al siguiente cuando estos coinciden.
mamcx tampoco queria permutar los caracteres aunque me ha parecido muy interesante ya que hace mucho intenté crear una aplicacion para resolver el juego televisivo de cifras y letras donde te daban 9 letras entre consonantes y vocales y tenias que sacar la palabra mas larga posible. Estuve viendo el tema de la permutacion pero un amigo me dijo que lo estaba planteando mal y que mejor que eso era, por ejemplo, supongamos que las 9 letras son ASTMAEALO, pues lo que el me planteó fue crear un diccionario y luego ordenar todas las letras de cada palabra por su orden alfabetico, o sea, si fuese ALA pues AAL, AVION pues AINOV, y asi con todas, luego hacer lo mismo con las letras que nos han dado quedando como AAAELMOST y buscar en el diccionario todas sus posibilidades como AAAELMOST, AAELMOST, AELMOST, ELMOST, y asi con todas las convinaciones posibles. Creo recordar que era así y fue muy eficaz. Ahora a lo que ibamos, ya lo he solucionado y era mas sencillo de lo que parecia y solo me faltó ajustar alguna cosilla. Asi quedó: Código PHP:
Última edición por aguml fecha: 21-10-2014 a las 10:01:03. |
#8
|
||||
|
||||
Cita:
Y eso de que la recursividad usa más recursos no siempre es cierto. Depende de muchos factores. Por ejemplo, el algoritmo de ordenación de burbuja sí puede resultar más pesada usando recursión, pero la QuickSort suele necesitar menos memoria con recursión que sin ella. |
#9
|
||||
|
||||
Bueno pues como solo es una prueba lo voy a dejar asi aunque me sigue interesando el tema de hacerla recursiva para hacer pruebas con ella. De momento he hecho 3 versiones diferentes y las tres funcionan perfectamente pero con tiempos diferentes:
Imagen de rendimientos aquí Y subo los tres modos que he usado para que opinen y asi aprendemos un poquito mas los que no sabemos tanto como algunos maestros de este foro (No nombro a ninguno para que no se me enfade nadie). PD: En la prueba 1 solo se puede usar hasta el valor máximo de un entero sin signo mientras que en los otros dos se puede usar sin limites aunque ya sabemos que la fuerza bruta tiene un problema y es que a mayor largo del serial, mas tiempo se necesitaria y podria llegar a ser casi infinito en el tiempo . |
#10
|
||||
|
||||
Cita:
Osea, que a menos que sepas con certeza que lo que haces con recursividad se puede "cortar" a tiempo, es mejor usar un metodo diferente. TODOS los algoritmos recursivos se pueden volver no recursivos. ---- Sigo sin entender que rayos quieres. Para que estas haciendo esto? Podrias dar una lista de datos de ejemplo con ejemplos de valores validos y valores invalidos?
__________________
El malabarista. |
#11
|
||||
|
||||
pues solo queria ver como hacer eso, era solo por ver como era, no es por algo en concreto. Yo por ejemplo en estos ejemplos a la cadena valida solo le he sumado 10 a cada caracter y esa es la cadena que busco despues en el bucle de fuerza bruta haciendo la misma operacion con cada cadena posible y comparando con la válida y si coincide ya tendrias el serial bueno. Ahora mismo no lo necesito para nada pero para seriales pequeños la fuerza bruta es muy válida.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Seleccionar un determinado rango de caracteres en un memo | ErikMdqqq | C++ Builder | 7 | 02-08-2013 03:51:49 |
Es posible crear bucle controlado | José Luis Garcí | Varios | 5 | 05-07-2011 10:04:54 |
Crear codigo de Fuerza Bruta | kurono | Varios | 12 | 31-01-2011 16:46:26 |
Como crear un bucle con TEdit's | axlrafael | OOP | 12 | 08-05-2008 19:22:48 |
Cerrar Form "fuerza bruta" | MaMu | Varios | 3 | 22-05-2007 19:59:50 |
|