7 , 10 byte, 27 caratteri
115160723426754314105574033
Provalo online!
La rappresentazione compatta di questo programma su disco è ( xxd
formato):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
Spiegazione
Abbiamo già visto questa sequenza di numeri in Automate Saving the World , che riguardava la stampa dei numeri a intervalli regolari, rendendolo interessante richiedendo l'uso di un linguaggio molto antico. Molte lingue più recenti possono avere i loro colpi di scena che rendono interessante questa sfida. (Sì, questo paragrafo, e in effetti il motivo per cui ho iniziato a scrivere questa risposta, è effettivamente solo un modo per ottenere tutte le sfide correlate da mostrare insieme nella barra laterale; normalmente le persone lo fanno usando i commenti ma non ho abbastanza rappresentante .)
La prima cosa da notare è che 7 è composto interamente da cifre, quindi è improbabile che i bonus qui funzionino (anche se se si considera il programma come una sequenza di ottetti, nessuno di essi corrisponde alle rappresentazioni ASCII di nessuno dei numeri originali , quindi potresti richiedere il bonus in tal senso). La prossima cosa da notare è che 7 ha comandi per ricreare la sequenza di comandi che probabilmente hanno prodotto un dato specifico; quindi potremmo forse interpretare i numeri persi 4815162342
come una sezione di un programma 7 stesso?
La risposta è "non del tutto". La parte più problematica è quel secondo numero 8
,. 7 programmi sono scritti in ottale; non esiste un numero come 8. Quindi l'inizio della stringa dovrà essere stampato in modo diverso.
La base del programma si basa quindi sul programma "Hello world" 7:
5431410557403
543141055 string literal
7 separate data from code
4 rearrange stack: {program's source}, empty element, {literal}
0 escape {the literal}, appending it to {the empty element}
3 output {the escaped literal}, pop {the program's source}
con l'essere letterale di escape in un linguaggio specifico del dominio che viene interpretato come segue:
5 output format: US-TTY using pairs of digits in the string
43 select character set: digits and common symbols
14 "4"
10 "8"
55 forget the set output format
Dopo questo arriva un extra 3
, che genera l'elemento stack rimanente (ed esce a causa dello stack rimanente insufficiente). Quell'elemento è specificato all'inizio del programma, e per evitare l'impareggiabile 6
(che funziona un po 'come una parentesi di chiusura), lo generiamo usando il codice, piuttosto che scriverlo direttamente come dati. (Si noti che ci sono due 7
caratteri impliciti all'inizio del programma, che è rilevante qui):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Questo produce il seguente letterale:
115162324
1 set output format: literally as octal
15162324 "15162324"
che viene stampato.