Di tutta la matematica, ci saranno sempre alcuni teoremi che vanno oltre ogni buon senso. Uno di questi è il fatto che esistono diverse dimensioni di infinito. Un altro fatto interessante è l'idea che molti infiniti che sembrano avere dimensioni diverse abbiano effettivamente le stesse dimensioni. Esistono tanti numeri pari quanti numeri interi, quanti sono i numeri razionali.
Il concetto generale di questa domanda è di confrontare la bizzarra realtà dell'infinito. In questa sfida, il tuo programma produrrà un elenco che:
- In qualsiasi momento specifico, avere sempre un numero intero di voci
- Alla fine contiene (se lasciato funzionare abbastanza a lungo) qualsiasi numero razionale specifico (diverso da zero) esattamente una volta sull'intero elenco
- Contengono un numero illimitato di slot vuoti (voci nell'elenco che sono inutilmente impostate su 0)
- Avere una proporzione di slot vuoti che si avvicina a un limite del 100%
- Per ogni numero intero positivo N, disporre di un numero infinito di posizioni con N slot vuoti consecutivi
La sfida
La tua sfida è quella di scrivere quel programma più breve possibile che produrrà un elenco speciale con le seguenti regole:
- Tutte le voci con un indice che non è un numero quadrato devono essere impostate su zero. Quindi, la prima voce sarà diversa da zero, la seconda e la terza saranno zero, la quarta sarà diversa da zero, ecc.
- Tutti i numeri razionali saranno sotto forma di una frazione impropria (come 4/5 o 144/13) che è stata semplificata. L'eccezione è zero, che sarà semplicemente
0
. - Tutti i numeri razionali (positivi e negativi) dovrebbero eventualmente apparire nell'elenco se il programma è in esecuzione abbastanza a lungo e con memoria sufficiente. Per ogni particolare numero razionale, il tempo richiesto può essere una quantità arbitrariamente grande, ma sempre finita, di tempo.
- Se eseguito per un tempo infinito, nessun numero razionale diverso da zero dovrebbe mai apparire due volte.
La Regola 3 consente alcune variazioni, in quanto vi è un numero infinito di diversi possibili output legali.
L'output sarà un flusso di linee. Ogni riga avrà la forma generale di 5: 2/3
dove il primo numero è il numero di entrata, quindi seguito dal numero razionale. Nota che 1: 0
sarà sempre la prima riga di output.
Esempio di frammento di output:
1: 1/1
2: 0
3: 0
4: 2/1
5: 0
6: 0
7: 0
8: 0
9: -2/1
10: 0
etc...
Regole, regolamenti e note
Questo è il codice golf. Si applicano le regole standard per il golf. Inoltre, a causa della variazione consentita nell'output, devi almeno mostrare perché ritieni che il tuo elenco conterrà tutti i possibili numeri razionali esattamente una volta e che la tua soluzione sia corretta.
EDIT: Poiché i numeri dei numeri primi hanno distratto dalla sfida, la sto cambiando in numeri quadrati. Ciò raggiunge lo stesso scopo e riduce anche le soluzioni.
1: 0
sarà sempre la prima riga di output. - Questo contraddice il tuo esempio e inoltre non ha senso per me.