Se ti piace, considera di partecipare a:
Crea 12 snippet / espressioni , nella stessa lingua, che generano rispettivamente i numeri da 0 a 10 e 42, ma senza scrivere alcun dato letterale numerico, stringa o carattere.
I dati incorporati , come PI()
e ALPHABET()
, vanno bene, così come le costanti U, X, Y, Z e A di CJam e BLEND, CHORD, CENTER, BREAK e LINES di Processing.
Ogni frammento deve essere in grado di resistere da solo, cioè potrebbe non essere interdipendente. Tuttavia, all'interno di un singolo frammento, è possibile assegnare una variabile e utilizzarla liberamente, purché si faccia riferimento ad essa direttamente per nome e non tramite una stringa contenente il suo nome.
Tutti i frammenti devono essere validi sul computer del mittente al momento dell'invio (come riportato da SE), ma potrebbero non fare affidamento su condizioni locali insolite come il numero di file in una directory, la data o l'ora esatta o l'input specifico dell'utente .
Esempi di frammenti validi
3: INT(LOG10(YEAR(TODAY())))
perché rimane vero nel prossimo futuro
4: CUBICROOT(LEN(CHARACTERSET()))
perché un set di caratteri di 256 lettere è molto comune
8: SQRT(SYSTEMTYPE())
perché i sistemi a 64 bit sono molto comuni
Esempi di frammenti non validi
5: LEN(USERNAME())
perché la maggior parte delle persone non usa "Admin" come login :-)
9: LOG10(SYSTEMMEMORY())
perché funziona solo su sistemi con esattamente 1 GB di memoria
42: CODE("*")
perché contiene una stringa / carattere letterale
Il risultato di ciascun frammento deve risultare in un numero effettivo (valore, int, float, ecc.) Che può essere utilizzato per ulteriori calcoli utilizzando la stessa lingua dello snippet, ovvero non una stringa di testo che rappresenta quel numero.
Sono ammesse solo le lingue basate sui caratteri.
Il punteggio è il conteggio totale dei byte di tutti i 12 frammenti combinati. Le newline che separano i frammenti non vengono conteggiate.
Si noti che le regole di cui sopra potrebbero impedire la partecipazione di alcune lingue, anche se sono complete.
FAQ
D I programmi possono accettare input?
A Sì, ma potresti non solo chiedere un input e inserire il numero corrispondente.
D Sono consentite cifre fisiche (non dati)?
A Sì, ad es LOG10()
.
D I simboli in Ruby contano come letterali?
A Sì.
D Il punteggio include nuove righe tra ogni frammento?
Un no
D TI-BASIC è "basato sui caratteri" abbastanza per essere valido?
A Sì.
D Falso e vero contano come letterali numerici?
A No, sono accettabili.
D Possiamo usare un numero letterale per chiamare una funzione se questo è l'unico modo e il numero non influenza l'output della funzione?
A Sì, se questo è il modo normale di scrivere il codice nella tua lingua.
D La mia lingua presuppone che ci sia un [qualcosa] all'inizio di ogni programma / espressione. Devo includerlo o i miei frammenti dovrebbero funzionare solo se inseriti nel mezzo di un programma / espressione?
A Dovrebbero funzionare solo nel mezzo di un programma / espressione.
D Che dire dei letterali regex?
A Proibito, ad eccezione delle lingue che fanno solo regex.
D È accettabile un pezzo di codice in grado di stampare tutti i numeri specificati?
A No, devono essere separati e reciprocamente indipendenti.
D Posso assumere una caldaia simile int main() {}...
o equivalente?
A Sì.
D Quali tipi di dati di output sono consentiti?
A Qualsiasi tipo di dati numerico, come int, float, ecc.
D Devo stampare il risultato di ogni frammento?
A No, è sufficiente rendere il risultato disponibile per l'uso successivo.
D Sono consentite le variabili preimpostate?
A Sì, e vengono ripristinati (se modificati) per ogni frammento.
D π ed e sono considerati numeri letterali?
A No, puoi usarli.
D Posso restituire 4 e 2 in celle diverse per 42?
A No, devono essere collegati come un numero.
Q Byte o caratteri?
A Byte, ma è possibile scegliere qualsiasi tabella codici desiderata.
D È possibile utilizzare funzioni costanti e variabili preimpostate come J's 9:
, Actually 9
e Pretzel 9
?
A Sì, se il vocabolario è finito (19 per J, 10 per Actually e Pretzel).