[SOLUCIONADO]Sobre encontrar un patrón que se repite muchas veces en un archivo

Iniciado por Hu3c0, Octubre 19, 2016, 06:26:29 PM

Tema anterior - Siguiente tema

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

Octubre 19, 2016, 06:26:29 PM Ultima modificación: Octubre 27, 2016, 08:24:25 AM por PikachuDorado
Hola estimados amigos de underc0de vengo humildemente a preguntarles si conocen cómo realiza mi siguiente  requerimiento:

Necesito encontrar un Patrón que se repite muchas veces  en un archivo de texto sin conocer como es ese Patrón mi logica me
dice, como sé que ese Patrón es mayor a 6 cifras  sería colocar el pointer en el principio del archivo,coger 6 cifras y crear un
Regex,leer con un buffer el archivo y con un matcher encontrar el pattern creado osea el Patrón.

El siguiente paso sería colocar el pointer en el segundo byte y realizar exactamente la misma operación a medida que se vayan
encontrando Patrones ingresarlos en algún  tipo de  datos tanto el Patrón encontrado como las veces que  se repite.

No sé si es correcto mi algoritmo ohh seguramente habrán mejores formas de reaiizarlo evitando el consumo de recursos tanto
a  nivel  pc como en tiempo.

Si tienen conocimiento sobre lo que quiero realizar y pueden aportar algo de luz es bienvenidad $_gracias => por leer.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola,

Como no indicas el lenguaje en que quieres desarrollar el algoritmo, te voy  a mostrar un articulo que encontré y que muestra las formas más rápidas de comprobar si una cadena está contenida dentro de otra cadena y ademas hace la comparativa en tiempo de ejecución de los diferentes métodos.








Saludos.



Muchas gracias como siempre Fudmario  eres el espíritu positivo de las cosas y del buenhacer.

El lenguaje de programación va a ser en Java y el tema es un archivo por ejemplo de 10MG
El requerimiento es encontrar la palabra que más se repite en ese archivo sin conocerla, lo que
si sabemos es que su longitud es superior a 7 caracteres.


Imaginemos que el archivo empieza asi:

ABCDEFGHIJKMNLLLÑOPQRSTUVWXYZ.........................................................................

Lo que yo había pensado hacer es coger los 7 primeros caracteres ABCDEFG en un pattern
a continuación leer el archivo fila a fila  y con un mattcher encontrar posibles candidatos si
va encontrando en su camino de lectura  entonces un contador va registrando esas entradas
por ejemplo ABCDEFG= 1000 coincidencias.

A continuación una vez termina de leer todo el file comenzaría desplazando el pointer con
RandomAccesFile  hacía el segundo caracter, o habiendo creado una Itineración con un bucle
for y colocarme el la siquiente posición:

BCDEFGH este sería el nuevo Pattern y realizaría nuevamente la lectura del archivo encon-
trando o no.! las coincidencias en su lectura.

Y así sucesivamente hasta  finalizar la totalidad del archivo es como finalmente he decidido
hacerlo lo que desconozco es si es viable o no..! en tiempos de ejecución y consumo de re-
cursos.

¿Quizás hayan formas más rápidas y mejores de realizarlo?

Abrazos amigo mío
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Buenas hu3co, no me quedo claro si lo que quieres es programarlo o algo para hacerlo.
Supongo que lo que tendra es un texto cifrado del que no sabes la longitud de la clave por eso te dejo esta web No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en tipo de analisis si marcas todos los analisis te dara estadisticas de aparicion de caracteres, asi como patrones que se repiten que es lo que tu preguntabas, con grafico y el %.

Te dejo un par de fotos de como muestra los resultados




Un saludo
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

Excelente aporte va para mi baúl de url's mi estimado amigo inde........es.Aunque procederé a codearlo en Java se
puede considerar solucionado el thread y muchísimas gracias  por haber compartido vuestra ayuda y tiempo.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Damos el tema por solucionado, pero como ya saben, si se genera alguna duda sobre el mismo tema pueden tranquilamente seguir comentando.

Pikaaa~
Pikaa~