(Ispirato dai 95 personaggi di ASCII ... 95 Citazioni di film )
La sfida
Dato input n
, genera il nth
numero di Fibonacci . È possibile utilizzare 0
o 1
indicizzare, si prega di indicare quale nella vostra presentazione. Semplice? Il trucco è che devi prendere il set di caratteri della risposta precedente immediata, rimuovere due caratteri da esso e aggiungere un carattere separato. Il personaggio separato deve
- non appartenere al set di caratteri della risposta precedente immediata
- essere dall'insieme di (ASCII stampabile, spazio, newline, scheda orizzontale)
e quindi la dimensione del tuo set di caratteri totale sarà esattamente una più piccola del set di risposte immediatamente precedenti.
La risposta iniziale
Il primo invio deve contenere un sottoinsieme di (tutti ASCII stampabili, spazio, newline e tab orizzontale) con due caratteri rimossi. Ogni invio in seguito deve limitare le proprie risposte a questo formato originale solo ASCII (il che significa che non è possibile aggiungere un carattere Unicode o ASCII esteso ... scusate Jelly, APL, et al.).
Esempi e chiarimenti
- Supponiamo che la prima risposta sia in C e contenga (quasi tutte le ASCII stampabili, la nuova riga e la scheda orizzontale) e ometta il
%
e^
dal suo set di caratteri. Il secondo invio, quindi, deve rimuovere due caratteri dal set di caratteri precedente (quasi tutti ASCII stampabile, nuova riga e scheda orizzontale) e aggiungere il carattere%
o^
. Forse è una risposta di PowerShell a una riga che omette la nuova riga. E così via. - Se la risposta precedente aveva
print(){}!*+
come set di caratteri (12 caratteri), l'invio potrebbe contenereprint(){}!
(10 caratteri) e un carattere aggiuntivo,print(){!+
(10 caratteri) e un carattere aggiuntivo, ecc. - Se la risposta precedente aveva
print(){}!*+
come set di caratteri (12 caratteri), la tua presentazione non poteva avereprint()
e&
(8 caratteri) come set di caratteri, da allora12 - 8 > 1
. - Se la risposta precedente aveva
print(){}!*+
come set di caratteri (12 caratteri), la tua presentazione non poteva avereprint(){}!
(10 caratteri) più carattere aggiuntivo*
come set di caratteri, poiché anche se sono 11 caratteri,*
è incluso nel set precedente. - Non tutti i personaggi del tuo set di personaggi devono fare qualcosa di utile per la tua presentazione. Ad esempio, se la risposta precedente aveva
print(){}!*+
come set di caratteri e la tua lingua ha un built-in!
che calcola la sequenza di Fibonacci e#
che inizia un commento, la tua presentazione potrebbe essere!#print(){}
ed essere valida. - Puoi usare lo stesso personaggio dal tuo set di personaggi più volte. Ad esempio, supponiamo che il tuo set di caratteri fosse
!*#_
, la tua risposta potrebbe essere!!!**#**#_!!
e sarebbe accettabile. - Oltre al tuo codice (e anche una spiegazione è buona!), Ti preghiamo di elencare esplicitamente il tuo set di caratteri, per rendere più facile l'invio futuro.
vincente
Il vincitore della sfida sarà la persona che ha pubblicato la seconda presentazione più recente (ovvero, non la persona che ha pubblicato l'ultima volta, dal momento che hanno rotto la catena).
Regole finali
Si applicano le normali regole di concatenamento delle risposte :
- La stessa persona non può pubblicare due volte di seguito
- Se una risposta è considerata non valida (ad esempio, ha utilizzato un carattere proibito o non viene calcolata correttamente), deve essere eliminata (e anche tutte le risposte successive che si interrompono)
- Due utenti che pubblicano "contemporaneamente" dovranno lasciare in sospeso l'invio precedente
- La stessa lingua non può essere pubblicata due volte di seguito. Ai fini di questa regola, le lingue della stessa famiglia (ad esempio Python 2 e Python 3) contano come "la stessa lingua".
Cose finali:
- Questo post funziona meglio se si ordina per "Più vecchio" in modo che le risposte siano nell'ordine corretto.
- Kyle Gullion ha costruito un controllo del codice in Python qui per verificare se ti manca o se stai usando caratteri sbagliati.