7 , 10 Bytes, 27 Zeichen
115160723426754314105574033
Probieren Sie es online!
Die gepackte Darstellung dieses Programms auf der Festplatte ist ( xxd
Format):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
Erläuterung
Wir haben diese Zahlenfolge bereits in Automate Saving the World gesehen , in dem es darum ging, die Zahlen in regelmäßigen Abständen zu drucken, was es interessant macht, eine sehr alte Sprache zu verwenden. Viel neuere Sprachen können jedoch ihre eigenen Wendungen haben, die diese Herausforderung interessant machen. (Ja, dieser Absatz und in der Tat der Grund, warum ich diese Antwort geschrieben habe, ist effektiv nur ein Weg, um alle damit verbundenen Herausforderungen in der Seitenleiste zusammen zu bringen. Normalerweise machen die Leute das mit Kommentaren, aber ich habe nicht genug Repräsentanten .)
Als erstes ist zu beachten, dass 7 vollständig aus Ziffern besteht, so dass es unwahrscheinlich ist, dass die Boni hier verwendet werden (obwohl, wenn Sie das Programm als eine Folge von Oktetten betrachten, keine der beiden ASCII-Darstellungen einer der ursprünglichen Zahlen entspricht) , so könnten Sie den Bonus in diesem Sinne beanspruchen). Als nächstes ist zu beachten, dass 7 Befehle zum Wiederherstellen der Befehlssequenz enthält, die wahrscheinlich ein bestimmtes Datenelement erzeugt hat. Könnten wir also die verlorenen Zahlen möglicherweise 4815162342
als Teil eines 7-Programms interpretieren ?
Die Antwort lautet "nicht ganz". Der problematischste Teil ist die zweite Zahl 8
. 7 Programme sind oktal geschrieben; Es gibt keine Zahl wie 8. Der Anfang der Zeichenfolge muss also anders gedruckt werden.
Die Basis des Programms basiert daher auf dem Programm 7 "Hallo Welt":
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}
mit dem maskierten Literal in einer domänenspezifischen Sprache, die wie folgt interpretiert wird:
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
Danach folgt ein zusätzliches 3
Element, das das verbleibende Stapelelement ausgibt (und aufgrund eines unzureichenden verbleibenden Stapels beendet wird). Dieses Element wird zu Beginn des Programms angegeben. Um zu vermeiden, dass das Element nicht übereinstimmt 6
(was ein bisschen wie eine schließende Klammer funktioniert), generieren wir es mit Code, anstatt es direkt als Daten zu schreiben. (Beachten Sie, dass es 7
zu Beginn des Programms zwei implizite Zeichen gibt , die hier relevant sind):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Das ergibt das folgende Literal:
115162324
1 set output format: literally as octal
15162324 "15162324"
das wird ausgedruckt.