Buenas a todos!
Es la primera vez que comento en este subforo.
La cosa es que me estaba picando unas clases en c++ sobre distintos tipos de cifrados, y, cómo no, comencé por el César, todo un juguete y una reliquia.
Como era evidente, también he estado haciendo unos métodos para romper el cifrado por fuerza bruta. Para ello, pruebo todos los posibles desplazamientos a piñón (en cifrados césar "sale más barato" ir a fuerza bruta que pensar en heurísticas). Pues bien: tomando por ejemplo el relato de Poe, sea mi texto plano "unbuenvasoenlahosteriadelobispo". Nótese que no tiene espacios en blanco.
Iré probando todos los desplazamientos, hasta que uno de ellos me devuelva el texto "unbuenvasoenlahosteriadelobispo".
PROBLEMA: teniendo una clase Dictionary, que no es más que una lista enorme de palabras y una interfaz, que entre otros métodos, tiene
bool wordBelongs(char* aWord);
bool isPrefix(char* aWord);
¿a alguien se le ocurre un algoritmo eficiente, eficaz y que no arroje falsos positivos para decidir si éste es un texto perteneciente al lenguaje? (lo de los falsos positivos es porque en el diccionario aparecen "a","b","c"..."z" como palabras, lo cual no me parece descabellado. Y entiéndase lenguaje como el cierre de kleen del conjunto Dictionary)
Gracias a todos.










Autor


En línea


, pues te diria que comprobar una a una pero lo mismo se acaba el mundo antes xD, suerte.