Los 9 mil millones de nombres de Dios es una historia corta de Arthur C. Clarke. Se trata de un grupo de monjes tibetanos cuya orden se dedica a escribir todos los posibles nombres de Dios, escritos en su propio alfabeto. Esencialmente, se dedican a escribir todas las permutaciones posibles de su alfabeto, restringidas por algunas reglas. En la historia, el monasterio contrata a algunos ingenieros para que escriban un programa que haga todo el trabajo por ellos. Tu objetivo es escribir ese programa.
Reglas:
El alfabeto del monje usa 13 caracteres (según mis estimaciones). Puede usar
ABCDEFGHIJKLM
o algún otro conjunto de 13 caracteres.La longitud mínima de un posible nombre es de 1 carácter. La longitud máxima es de 9 caracteres.
Ningún personaje puede repetir más de 3 veces seguidas.
AAABA
es un nombre válido, peroAAAAB
no lo es.Su programa debe imprimir (en un archivo) todos los nombres posibles en secuencia de
A
aMMMLMMMLM
, separados por cualquier carácter que no esté en el alfabeto (líneas nuevas, punto y coma, lo que sea).Este es el código de golf, y puede usar cualquier idioma. La solución más corta para el 1 de junio de 2014 gana.
Editar: los nombres deben comenzar A
y terminar con MMMLMMMLM
, progresando a través de todos los miles de millones de nombres secuencialmente. Pero la secuencia particular depende de usted. Puede imprimir primero todos los nombres de 1 letra, luego todos los nombres de 2 letras, etc. O puede imprimir todos los nombres que comienzan con A
, luego todos los que comienzan con B
, o algún otro patrón. Pero un humano debería poder leer el archivo y confirmar que están todos allí y en el orden lógico que elija, suponiendo que tengan el tiempo.
f(k) = k^9 + k^8 + k^7 - 5*k^6 + k^5 + k^4 + 4*k^3 - 2*k^2 + k
. Implementación de Sage: goo.gl/0srwhq
105.8GB
Todo dicho y hecho! Me alegro de que las estrellas no se apagaran ... ¿o quizás tengas que imprimir la lista para que eso suceda ...?