プログラムA:
"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd
プログラムBの長さは8kBを超えているため、リンクが切断されるため、すべてを貼り付けることはしません。サンプルを次に示します。
#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²
NUL
バイトを機能させる方法を見つけることができなかったため、プログラムBには255個の一意の文字しかありません。プログラムBは基本的に単一のプログラムの255個のコピーで構成されており、1回の無関係なバイトが毎回変更され、最初の254回の実行は無視されます。
説明のために、結果のBについて議論しやすくするために、この単純化されたバージョンのAから始めます。
"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd
このプログラムは、基本的なペイロード対応のJapt quineに基づいています。先頭の文字列には、プログラムの残りの部分の複製が含まれておりiQ ²
、引用符と複製を挿入してプログラム全体の文字列表現を作成し、¯23
それ自体とその後の部分を削除します。結果の文字列は、プログラムAを出力するプログラムです。
"iQ ²¯23
3õ@i'#+Xd"iQ ²
この文字列をとして参照しますU
。
Aの最後の行は、U
毎回小さな変更を加えて多数の時間を複製します。具体的にX
は、範囲内の各数値に対して、charcodeの文字がどこにある[1...3]
かを出力します。Japtのデフォルトの動作は、引用符なしでコンマで区切られた文字列を出力することです。したがって、これはSimplified Aの出力です(各との間に印刷できないバイトがあることに注意してください:"#c" + U
c
X
#
"iQ
#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²
これをSimplified Bと呼びます。
簡略化されたBは交互に、簡単な構造を有している#c
とU
。幸いなことに、それぞれの#c
and U
はカンマで区切られて扱われます。この状況では、その動作は最後を除くすべてU
であり、出力には影響しません。出力に影響するSimplified Bの唯一の部分は次のとおりです。
"iQ ²¯23
3õ@i'#+Xd"iQ ²
これは、U
出力Simplified Aを既に知っているものと同じです。
Simplified AとProgram Aの唯一の違いは、範囲[1...3]
のコピーを生成する代わりに、実際のプログラムが範囲のコピーを生成することです[1...256]
。その結果、#c
それぞれが異なる文字を持つ256バージョンになります。ただし、最後のバージョン「Ā」はマルチバイト文字であるため、一意のバイトは追加されませんが、最後以外はすべてU
無視されます。