7 , 10 octets, 27 caractères
115160723426754314105574033
Essayez-le en ligne!
La représentation compacte de ce programme sur disque est ( xxd
format):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
Explication
Nous avons déjà vu cette séquence de nombres dans Automate Saving the World , qui consistait à imprimer les nombres à intervalles réguliers, ce qui la rend intéressante en nécessitant l'utilisation d'une langue très ancienne. Beaucoup de langues plus récentes peuvent avoir leurs propres rebondissements qui rendent ce défi intéressant, cependant. (Oui, ce paragraphe, et en fait la raison pour laquelle j'ai commencé à écrire cette réponse, n'est en fait qu'un moyen de rassembler tous les défis associés dans la barre latérale; normalement, les gens le font en utilisant des commentaires, mais je n'ai pas assez de représentants .)
La première chose à noter est que 7 est entièrement composé de chiffres, donc il est peu probable que les bonus ici fonctionnent (bien que si vous voyez le programme comme une séquence d'octets, aucun d'entre eux ne correspond aux représentations ASCII de l'un des nombres originaux , vous pouvez donc réclamer le bonus dans ce sens). La prochaine chose à noter est que 7 a des commandes pour recréer la séquence de commandes susceptible d'avoir produit une donnée spécifique; alors pourrions-nous éventuellement interpréter les numéros perdus 4815162342
comme une section d'un programme 7 lui-même?
La réponse est "pas tout à fait". La partie la plus problématique est ce deuxième numéro 8
,. 7 programmes sont écrits en octal; il n'y a pas de nombre comme 8. Ainsi, le tout début de la chaîne devra être imprimé différemment.
La base du programme est donc basée sur le 7 programme "Hello world":
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}
avec le littéral échappé étant dans un langage spécifique au domaine qui est interprété comme suit:
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
Après cela vient un extra 3
, qui génère l'élément de pile restant (et se termine en raison d'une pile restante insuffisante). Cet élément est spécifié au début du programme, et pour éviter l'inégal 6
(qui fonctionne un peu comme une parenthèse fermante), nous le générons en utilisant du code, plutôt que de l'écrire directement en tant que données. (Notez qu'il y a deux 7
caractères implicites au début du programme, ce qui est pertinent ici):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Cela produit le littéral suivant:
115162324
1 set output format: literally as octal
15162324 "15162324"
qui est imprimé.