Calcular anagrama persona fisica

libro de soluciones de anagramas

Muchos juegos de palabras -Scrabble, Words with Friends, Scribbage, Quiddler y otros- implican anagramas, es decir, descifrar letras para formar una palabra. Este mes vamos a ver cómo hacer ese descifrado.
Podrías resolverlo con un método de fuerza bruta, como haría un ordenador. Con siete letras, hay 5 x 4 x 3 x 2 x 1, o 120, posibilidades. Podrías trabajar con todas ellas y buscarlas en el OED o en tu propio léxico mental para encontrar las que son palabras legítimas. A razón de un minuto por cada combinación, eso llevaría unas dos horas, lo que no es un ritmo eficiente para las personas. Los humanos tenemos que probar otros métodos y aquí hay algunas estrategias.
Puedes empezar con patrones consonánticos. Mira el naitp, ignorando las vocales al principio. En lugar de 120 combinaciones, sólo hay seis: ntp, tnp, pnt, ptn, tpn, npt. Luego puedes ampliarlas a 12 posibilidades añadiendo las secuencias vocálicas a-i e i-a entre las tres consonantes. Así encontrarás la palabra patin.
También querrás considerar las posibilidades en las que las consonantes se agrupan. Aquí puedes eliminar las combinaciones iniciales nt, tn, pn (que sólo aparece en palabras largas prestadas como neumonía y neumático), pt (que se limita a cosas como pterodáctilo), tp y np. A continuación, piense en las combinaciones que pueden darse al final de una palabra o sílaba. Puedes eliminar tn, pn, tp y np. Lo que deja p-nt y n-pt. Si pruebas las combinaciones vocálicas ai e ia entre los guiones, encontrarás rápidamente la pintura. Y si pruebas con las vocales i y a al principio y al final de cada combinación, también obtendrás pinta e inapt.

libros de google

Dada una cadena de entrada de hasta 25 caracteres que consta de los caracteres A-Z, obtenga su índice en la lista ordenada alfabéticamente de todos los posibles anagramas de la cadena de entrada. La cadena de entrada no distingue entre mayúsculas y minúsculas. Los caracteres de entrada pueden repetirse. La aplicación debe completarse en menos de 500ms y ocupar menos de 1GB de memoria.
A primera vista esto parece imposible de hacer sin una biblioteca matemática de precisión arbitraria. En el peor de los casos, se introducen 25 caracteres únicos, lo que da lugar a 25 anagramas posibles. 25! es un orden de magnitud mayor que 2^64. Dado que la relación entre los índices y las cadenas no es directa y debe ser calculada, no hay forma de convertir simplemente la cadena en un número.
Dadas las frecuencias de las letras de una palabra, es fácil contar el número de anagramas de la palabra. Es el factorial del número total de caracteres, dividido por los factoriales de las frecuencias, estos números también se conocen como los coeficientes multinomiales.
Utilizando este hecho se puede obtener el índice de cualquier anagrama contando el número de anagramas de los prefijos que lo preceden alfabéticamente. Por ejemplo, tomemos MISSISSIPPI: las frecuencias de las letras son I: 4, M: 1, P: 2, S: 4, lo que hace un total de ¡11!/(4!1!2!4!) = 34650 anagramas.

ejemplos de anagramas

Un anagrama es una palabra o frase que se forma reordenando las letras de otra palabra o frase, normalmente utilizando todas las letras originales exactamente una vez[1]. Por ejemplo, la propia palabra anagrama puede reordenarse en nag a ram, también la palabra binary en brainy y la palabra adobe en abode.
La palabra o frase original se conoce como el sujeto del anagrama. Cualquier palabra o frase que reproduzca exactamente las letras en otro orden es un anagrama. A quien crea anagramas se le puede llamar “anagramista”,[2] y el objetivo de un anagramista serio o experto es producir anagramas que reflejen o comenten su tema.
Fueron populares en toda Europa durante la Edad Media, por ejemplo con el poeta y compositor Guillaume de Machaut[6]. Se dice que se remontan por lo menos al poeta griego Licofrón, en el siglo III a.C.; pero esto se basa en un relato de Licofrón dado por Juan Tzetzes en el siglo XII[7].
En la literatura talmúdica y midráshica se utilizaron anagramas para interpretar la Biblia hebrea, en particular por Eleazar de Modi’im. Más tarde, los cabalistas lo retomaron con entusiasmo, llamando a los anagramas temurah[8].

solucionador de anagramas de varias palabras

Esto significa que no es necesario contar cada carácter en un mapa, simplemente se puede tomar una cadena, ordenar sus caracteres (como ya se hace), convertirla de nuevo en una cadena (lo que también se hace) y utilizar esta cadena como clave del mapa.
Cuando abstraes el problema más allá, se puede ver como un mapa, en el que se pueden almacenar múltiples entradas para cada clave. Esto es también algo que tu código ya hace. El punto crucial es cómo se calcula la clave. Ya definiste un método para eso y lo llamaste createMap. Ese nombre es incorrecto. Ese método no crea un mapa, sino que calcula la clave.
Un área donde puedes mejorar mucho tu código es cómo nombras las variables. Ahora mismo nombraste la mayoría de las variables basándote en su tipo. Por ejemplo, al es una lista. Probablemente fue un ArrayList en algún lugar en el pasado, de ahí puede provenir la a. O la a significa anagrama, en cuyo caso la variable debería haberse llamado realmente anagramas.
Con el uso de ArrayList el mapa puede contener duplicados de cadena : para evitar este problema se puede usar un Set y específicamente un TreeSet porque cuando se itera sobre las claves, éstas se ordenan por su orden natural. Así que la clase puede ser reescrita como abajo:

Leer más  Cuenta de gastos anticipados

Entradas relacionadas