Os 9 bilhões de nomes de Deus é um conto de Arthur C. Clarke. É sobre um grupo de monges tibetanos cuja ordem é dedicada a escrever todos os nomes possíveis de Deus, escritos em seu próprio alfabeto. Essencialmente, eles são dedicados a escrever todas as permutações possíveis de seu alfabeto, restritas por algumas regras. Na história, o mosteiro contrata alguns engenheiros para escrever um programa para fazer todo o trabalho para eles. Seu objetivo é escrever esse programa.
Regras:
O alfabeto do monge usa 13 caracteres (de acordo com minhas estimativas). Você pode usar
ABCDEFGHIJKLM
ou outro conjunto de 13 caracteres.O comprimento mínimo de um nome possível é de 1 caractere. O comprimento máximo é de 9 caracteres.
Nenhum personagem pode repetir mais de 3 vezes seguidas.
AAABA
é um nome válido, masAAAAB
não é.Seu programa deve imprimir (em um arquivo) todos os nomes possíveis em sequência de
A
paraMMMLMMMLM
, separados por qualquer caractere que não esteja no alfabeto (novas linhas, ponto e vírgula, qualquer que seja).Isso é código-golfe e você pode usar qualquer idioma. A solução mais curta até 1º de junho de 2014 vence.
Editar: Os nomes devem começar A
e terminar com MMMLMMMLM
, progredindo por todos os bilhões de nomes sequencialmente. Mas a sequência específica é com você. Você pode imprimir todos os 1-letra nomes em primeiro lugar, em seguida, todos os nomes de 2 letras, etc. Ou você pode imprimir todos os nomes que começam com A
, em seguida, todos aqueles que começam com B
, ou algum outro padrão. Mas um humano deve ser capaz de ler o arquivo e confirmar se está tudo lá e na ordem lógica que você escolher, supondo que ele tenha tempo.
f(k) = k^9 + k^8 + k^7 - 5*k^6 + k^5 + k^4 + 4*k^3 - 2*k^2 + k
. Implementação Sage: goo.gl/0srwhq
105.8GB
tudo dito e feito! Fico feliz que as estrelas não tenham saído ... ou talvez você precise imprimir a lista para que isso aconteça ...?