Imagine una cerradura de bicicleta combinada con 4 anillos que contienen 10 letras. ¿Cómo se puede calcular qué letras en cada anillo producirán las palabras más válidas?

Aunque la respuesta eventual involucrará un algoritmo genético, antes que nada debe elegir qué son “palabras válidas”, del espacio de búsqueda 4 ^ 26.

Hay 16 patrones de vocales y consonantes, que van desde vvvv hasta CCCC. Es poco probable que estos dos ordenamientos particulares contengan palabras. ¿Se permiten palabras en francés? “Dieu” es un iDea que algunos podrían tener, una vez en un aire (lo siento, no se me ocurrió ningún vvCv obvio).

Como solo hay cinco vocales, las consonantes tendrán que ir de todos modos. Para obtener las palabras más válidas, de ahora en adelante v significa “hasta 5/6 vocales y tantas consonantes como sea necesario”, y tendremos dos de ellas, ignorando vvCC y CCvv.

Entonces, para vCCv, vCvC, CvvC y CvCv, cada uno por separado, genera anillos iniciales (cadenas de 40 caracteres, o más bien 4x 10 caracteres para cada anillo), muta un carácter aleatorio de un anillo aleatorio para cualquier letra elegible en él, un número apropiado de veces, lo cual no es trivial, y tome los descendientes “más aptos” para repetir.

Considere sembrar sus anillos iniciales al azar y usar bigraphs y trigraphs del corpus de “palabra válida”, así como también permitir los códigos 2 + 2 (ToBe), 1 + 3 (iTRy) y 3 + 1 (Mayi) en ese corpus, aunque en una carrera separada.

Mi apuesta es CvvC, CvCv o algún tipo de Cvvv con E como la única letra en el anillo final. ¿Desea permitir también palabras de fondo, y quizás también una E en el primer timbre (o eLSe!)

Un método sería obtener una lista de las palabras de cuatro letras en el diccionario y luego contar cuántas veces aparece cada letra en su posición respectiva en esta lista. Por lo tanto, tendría 4 matrices, una para cada dial en su cerradura, de 26 de longitud cada una donde cada elemento corresponde a una letra del alfabeto.

Esto le daría su respuesta requerida.

EDITAR

Permítanme dar un ejemplo simple para aclarar las cosas.

Digamos que tiene una palabra válida de su lista como “HUESO”. Tomas la primera letra, B, y sabes que es la segunda letra del alfabeto. Luego toma su primera matriz e incrementa el valor en 2 (suponiendo una matriz indexada 1) en 1. Lo hace para las 4 matrices.

Esto le dará un recuento de qué letra aparece más en cada una de las cuatro posiciones de una palabra de 4 letras.