Algoritmos
Posted on mayo 16, 2011 by Braulio
Vale, no sirve para absolutamente nada. No tiene utilidad alguna, gracias a esto no vas a conseguirun trabajo, ni una vida mejor, pero mola.
La verdad es que no tenía nada mejor que hacer y pensé en un programa que generara anagramas a partir de una frase de entrada. Gracias al programa que hice,el nombre de este blog se convierte en: Fin Lofsutofasal (Alfffa Solutions). De todas formas, el algoritmo tiene cierto componente aleatorio, por lo que si probara de nuevo no obtendría el mismoresultado.
El algoritmo que uso es el siguiente:
1. Se recibe la frase por parte del usuario
2. Se generan N permutaciones aleatorias de esa frase (cuanto más grande sea N más tardaráevidentemente, yo uso N=10000)
3. Se puntúa con cierto método cada una de las permutaciones (las reglas de puntuación se ven en el código)
4. La permutación con más puntos se convierte en el anagramadeseado.
Es cierto que mi código se podría mejorar para que fuera más eficiente y para que eligiera mejores anagramas. No creo que vaya a usar casi nunca más el programa, por lo tanto no veo quemejorarlo merezca la pena.
view source
print?
01 | #Programa generador de anagramas |
02 | import random |
03 | |
04 | consonantes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"|
05 | vocales = "aeiouAEIOU" |
06 | |
07 | letrasFinal = vocales+"lsrnLSRN" |
08 | |
09 | consonantesNoPegan = "bcdfghjkqwxyzBCDFGHJKQWXYZ" |
10 | consonantesNoPeganPrin ="swyzSWYZ" |
11 | def permutaciones(frase): |
12 | stringd = list(frase) |
13 | aDevolver = "" |
14 | for index in range(len(frase)): |
15 | indice = random.randint(0,len(stringd)-1) |
16 | aDevolver += stringd[indice] |
17 | stringd.remove(stringd[indice]) |
18 | return aDevolver |
19 | |
20 | def puntuarAnagrama(frase): |
21 |...
Regístrate para leer el documento completo.