7、10バイト、27の文字
115160723426754314105574033
オンラインでお試しください!
このプログラムのディスク上のパック表現は(xxd
format):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
説明
以前に、Automate Saving the Worldでこの数字のシーケンスを見てきました。これは、非常に古い言語の使用を要求することで、一定の間隔で数字を印刷するというものでした。しかし、はるかに新しい言語には、この課題を興味深いものにする独自の工夫がある場合があります。(はい、この段落、そして実際にこの答えを書き始めた理由は、事実上、関連するすべての課題をサイドバーに一緒に表示する方法です。通常、人々はコメントを使用してそれを行いますが、十分な担当者がいません)
最初に注意することは、7はすべて数字で構成されているため、ここでのボーナスはうまくいかない可能性があることです(ただし、プログラムをオクテットのシーケンスと見なす場合、元の数字のASCII表現に対応するものはありません) 、その意味でボーナスを請求できます)。次に注意すべきことは、7には特定のデータを生成した可能性が高いコマンドシーケンスを再作成するコマンドがあることです。失われた数字を解釈できるかもしれません4815162342
7のプログラム自体のセクションとしてをでしょうか?
答えは「まったくない」です。最も問題のある部分は、その2番目の数字です8
。7つのプログラムは8進数で記述されています。8などの番号はありません。したがって、文字列の最初の部分を別の方法で印刷する必要があります。
したがって、プログラムのベースは7つの「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}
エスケープされたリテラルは、次のように解釈されるドメイン固有の言語です。
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
この後3
、残りのスタック要素を出力する余分なが来ます(そして、不十分な残りのスタックのために終了します)。その要素はプログラムの開始時に指定され、不一致6
(閉じ括弧のような働きをする)を避けるために、データとして直接書き込むのではなく、コードを使用して生成します。(7
プログラムの開始時に2つの暗黙の文字があることに注意してください。これはここで関連しています):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
これにより、次のリテラルが生成されます。
115162324
1 set output format: literally as octal
15162324 "15162324"
印刷されます。