The 9 Billion Names of God è un racconto di Arthur C. Clarke. Parla di un gruppo di monaci tibetani il cui ordine è dedicato a scrivere tutti i possibili nomi di Dio, scritti nel loro proprio alfabeto. In sostanza, sono dedicati a scrivere ogni possibile permutazione del loro alfabeto, limitato da alcune regole. Nella storia, il monastero assume alcuni ingegneri per scrivere un programma per fare tutto il lavoro per loro. Il tuo obiettivo è scrivere quel programma.
Regole:
L'alfabeto del monaco usa 13 caratteri (secondo le mie stime). Puoi usare
ABCDEFGHIJKLM
o qualche altro set di 13 caratteri.La lunghezza minima di un nome possibile è 1 carattere. La lunghezza massima è di 9 caratteri.
Nessun personaggio può ripetere più di 3 volte in successione.
AAABA
è un nome valido, maAAAAB
non lo è.Il tuo programma dovrebbe stampare (su un file) ogni possibile nome in sequenza da
A
aMMMLMMMLM
, separato da qualsiasi carattere non presente nell'alfabeto (newline, punti e virgola, qualunque cosa).Questo è code-golf e puoi usare qualsiasi lingua. Vince la soluzione più breve entro il 1 giugno 2014.
Modifica: i nomi dovrebbero iniziare con A
e terminare MMMLMMMLM
, procedendo in sequenza attraverso tutti i miliardi di nomi. Ma la sequenza particolare dipende da te. Puoi stampare prima tutti i nomi di 1 lettera, quindi tutti i nomi di 2 lettere, ecc. Oppure puoi stampare tutti i nomi che iniziano con A
, quindi tutti quelli che iniziano con B
, o qualche altro motivo. Ma un essere umano dovrebbe essere in grado di leggere il file e confermare che sono tutti lì e nell'ordine logico che scegli, supponendo che abbiano il tempo.
f(k) = k^9 + k^8 + k^7 - 5*k^6 + k^5 + k^4 + 4*k^3 - 2*k^2 + k
. Implementazione prudente
105.8GB
tutto detto e fatto! Sono contento che le stelle non siano uscite ... o forse devi stampare la lista perché ciò accada ...?