gdpePy(Generador de palabras en español en Python) - 0.1
La idea surgió, cuando estaba mirando un canal, que a determinado horario, corto su transmisión, para colocar un juego en el que se tienen un par de letras desordenadas, con el fin de que una persona superdotada, obvio, de otro mundo, gane miles de pesos, solo por formar dicha palabra.
Creo que ya todos sabemos, que los únicos que llaman y son atendidos en esos programas son los encargados de la producción del mismo. A los demás los entretienen con mensajes de texto, que obviamente, son utilizados, para generar el monto que finalmente se entrega al ganador (nuevamente, familiar o amigo de la producción). Bueno, eso no importa.
Aunque el código es funcional, se puede pulir mucho, es más, se debe pulir, para mejorar el rendimiento y ordenarlo mejor.
El funcionamiento es muy básico, el script (se requiere antes, generar un fichero en donde se encuentre el mismo: "palabras.txt"), pide que se ingresen las letras para formar la palabra, después, el número de letras sin contar las repetidas (es decir, en el caso de "perro", se colocaría "4", ya que la "r", se repite).
En el momento que le damos enter, lo que hace el programa es generar un random con las letras que le pasamos por el raw_input y empieza a guardarlas en un archivo de texto (palabras.txt). La cantidad de palabras random que hace es igual a: cantidad de letras para combinar elevado al numero máximo de letras más uno.
Ahora, lo que tenemos es un archivo txt, que esta lleno de palabras una abajo de la otra, sin sentido a simple vista, pero entre todas...se tuvo que haber formado la palabra que buscábamos. Acá, se presento un problema, y es que el random repetía algunas secuencias de caracteres, es por eso, que lo que hace, es crear un nuevo archivo de texto (formadas.txt), que lo que hace es copiar las palabras sin repetir del archivo "palabras.txt".
Las secuencias de letras en "formadas.txt", ya no se repiten, el ultimo paso es encontrar la que tenga sentido. Para eso, lo que utilice fue un diccionario (en realidad una lista de 78921 palabras en español), que descargue desde aca, que guarde con el nombre de "diccionario.txt", y despues agregue unas lineas de código, para que compare los dos archivos y busque una coincidencia...obviamente, la coincidencia, es la palabra que buscábamos (aunque en muchos casos, una secuencia de letras, como por ejemplo: "atgo", puede formar varias palabras como: "gato", "gota", "toga"). En el ejemplo que puse al comienzo del post, aparece la palabra Python, que obviamente, no se encuentra en el diccionario en español, pero la agregue.
Modificaciones a realizar:
*Que reconozca automaticamente las letras que se repiten.
*Que el random no genere palabras repetidas, para evitar el uso
de un segundo archivo de texto (formadas.txt).
*Mejorar rendimiento.
Uno de los problemas que puedo notar, es que si se trata de una palabra mayor o igual a 8 caracteres, es posible que tarde bastante en "adivinarla" (cuando digo bastante, me refiero a BASTANTE), esto se debe principalmente, a que el random, genera muchas secuencias de caracteres que se repiten en el primer paso y hace que al momento de buscar coincidencias se demore.