Il tuo compito è quello di creare il periodo più lungo iterando quine , in cui la lunghezza di ciascun programma nella sequenza è limitata da 500 byte.
Cioè, se si ripetono i seguenti passaggi:
- Inizia con il tuo programma iniziale
- Esegui il programma corrente
- Torna al passaggio 2
Alla fine tornerai al tuo programma originale. Il numero di programmi nel ciclo è il tuo punteggio, che stai cercando di massimizzare.
Nessuno dei programmi può generare errori. Ogni programma deve essere eseguito allo stesso modo (ad es. Nessuna versione, implementazione, opzione del compilatore, piattaforma, ecc. Diverse (EDIT: Sì, qualsiasi stato esterno come quello di un generatore di numeri pseudo casuali è stato incluso nell'ultimo istruzione. Lo stato esterno deve essere "ripristinato" dopo ogni esecuzione. Se si utilizzano numeri casuali veri, si presume il caso peggiore.)
Ciò che separa questa sfida dal periodo più lungo che fa iterare il quine (diverso da 100 vs 500) è che ogni programma nel ciclo deve anche essere di 500 byte o meno. Ciò significa che il ciclo più lungo possibile è (256 ^ 501 - 1) / 255 o meno. Questo ovviamente è un numero elevato, ma non così grande in termini di codice necessario per il calcolo. Quindi la sfida consiste nell'utilizzare quante più possibilità (256 ^ 501 - 1) / 255 possibile, non una sfida di castori impegnata.
Ai programmi non è consentito accedere al proprio codice sorgente. Tuttavia, se lo si desidera, è consentito un programma vuoto (purché si rispettino le altre regole).
Dal momento che controllare i programmi manualmente sarebbe difficile, è possibile capire il punteggio usando metodi teorici. È necessario includere una spiegazione del punteggio e della correttezza con il programma. Se non riesci a capire il punteggio, puoi invece utilizzare un limite inferiore del numero di programmi nel ciclo come punteggio defacto. Puoi aggiornarlo quando trovi limiti inferiori migliori o se trovi il punteggio effettivo esatto.
Questa è una sfida al codice , quindi il punteggio più alto vince!
EDIT: si consiglia di scrivere qual è il tuo punteggio in notazione scientifica, in modo che le risposte siano più facilmente comparabili. È perfettamente bene avere anche altre forme del punteggio, specialmente se sono più chiaramente collegate al tuo programma. Inoltre, i lettori sono incoraggiati a modificare le risposte precedenti per conformarsi a questo.