回答:
1
2
この回答について思い出させてくれた@MartinEnderに感謝します。
これは、適切なクインの定義における潜在的な欠陥を悪用します。
プログラムの別の部分をエンコードするプログラムのセクションを識別できる必要があります。(「異なる」とは、2つのパーツが異なる位置に表示されることを意味します。)
さらに、クインは直接または間接的に自身のソースにアクセスしてはなりません。
出力はコードの逆であり、コードは回文ではないため、これは明らかにここに当てはまります。
RProgN – プログラマーの逆記法– LIFOスタックを使用して、ポップされた順にアイテムを印刷します。スペースや改行で区切られた2つのトークン1と2は、逆の順序でポップされ、改行で区切られて出力されます。
これにより、反転したプログラムが印刷されます
2
1
次に、元の画像を印刷します。
#
ヘッダーを作成するにはを使用します。また、Tryitonline.netにアクセスしてオンラインインタープリターを取得してください
"L;L'!+!'_
これは印刷します:
_'!+!'L;L"
およびその逆。
これはリバース・クインの修正版です。これ!
は、印刷に使用され、見積もりからコードポイントが1つだけ離れているという点で、私たちにとって有利に機能しています"
。これにより、見積もり印刷セクションを回文('!+!'
)にすることが容易になります。最初のコードから始めましょう:
"L;L'!+!'_
このプログラムには、L
sに2つのエントリポイントがあり、それぞれ左方向のアトムを作成します。しかし、正しいものはすぐにヒットし、;
破壊します。左のものは文字列モードに入り、最後まで折り返して、コード全体(を除く"
)を前から後ろに出力します。それはすでに私たちに与え_'!+!'L;L
ます。あとはを印刷するだけ"
です。_
無視することができ'!
、原子の質量を33(のコードポイント!
)に+
設定し"
、それをに増分して!
出力します。これですべての出力が完了しました。'L
セットのコードポイントの原子質量L
が、それは無関係です。;
このアトムも破棄します。アトムは残っていないため、プログラムは終了します。
さて、逆の方法で:
_'!+!'L;L"
繰り返しますが、2つのエントリポイントがありますが、1つの原子がすぐに破棄されます。今回は!+!'
最初にセクションを移動するので、見積もりを印刷することから始めます。'_
再び無関係ですが、我々は必要_
を避けるために、ここで(またはいくつかの他の役に立たない文字)を'
エスケープ"
。アトムは最後まで折り返され、文字列モードでソースコードを1回トラバースして残りのプログラムを逆方向に出力します。これL
は無視され;
、アトムを破棄してプログラムを終了します。