7 , 10 byte, 27 caratteri
115160723426754314105574033
Provalo online!
La rappresentazione compatta di questo programma su disco è ( xxdformato):
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 4815162342come 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 7caratteri 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.