期間2の逆クイン


10

あなたの仕事は、独自のソースコードを逆に出力するプログラムを書くことです。ただし、逆のコードを実行すると、正しい方向を向いてソースコードが出力されます。

あなたのプログラムはだとしましょうabc。実行すると、が出力されますcbacba実行すると、が出力されますabc

ルール

プログラムは、適切なクインのすべてのルールに従う必要があります(ソースコードの出力を除く)。パリンドロームは許可されていません。

ランダムなメモ:私はこれを認識しいますが、変換されたコードは同じプロパティを持っている必要があるため、この課題は異なると思います。



回答:


9

RProgN、3バイト

1
2

この回答について思い出させてくれた@MartinEnderに感謝します

オンラインでお試しください!

使い方

これは、適切なクインの定義における潜在的な欠陥を悪用します。

プログラムの別の部分をエンコードするプログラムのセクションを識別できる必要があります。(「異なる」とは、2つのパーツが異なる位置に表示されることを意味します。)

さらに、クインは直接または間接的に自身のソースにアクセスしてはなりません。

出力はコードの逆であり、コードは回文ではないため、これは明らかにここに当てはまります。

RProgN – プログラマーの記法– LIFOスタックを使用して、ポップされた順にアイテムを印刷します。スペースや改行で区切られた2つのトークン12は、逆の順序でポップされ、改行で区切られて出力されます。

これにより、反転したプログラムが印刷されます

2
1

次に、元の画像を印刷します。

!enilno ti yrT


URLが好きです。
クリストファー

4
これを修正する必要があります... メタ質問に(このコメントに基づいて)新しい回答を投稿しますが、既存の回答と競合するのに十分な注意が払われない可能性があります。
ETHproductions 2017年

2
@ETHproductions:それをやってください。現在の適切なクインの定義にはいくつかの問題があると思います。(間違いなく、私の言語7は、適切なクインネスに関するエッジケースの研究です。この特定のケースに加えて、他のかなりの数を処理することができます。)定義; 1と2は明確にそれ自体でエンコードされているため、改行をエンコードする対象についてのみ潜在的な関心があります。(これは1\n1、2つ1のがお互いをエンコードするとは異なります。これはおそらく適切なクインですが、適切な逆

9

Befunge-98、33バイト

b3*>1#;-:0g,:#;_@_;#:,g0:-;#1>*b3

オンラインでお試しください!


最初の正解です。ただし、#ヘッダーを作成するにはを使用します。また、Tryitonline.netにアクセスしてオンラインインタープリターを取得してください
クリストファー

2
また、[保存]ボタンの下に移動し、コードゴルフ提出1を使用します。
クリストファー

リンクを追加するのを忘れていた最初の場所でTIOで編集しましたが、追加されました。ヘッダーのヒントに感謝します
IQuick 143

TIOの「codegolf submission」オプションは、ヘッダーを含む開始テンプレートを提供することに注意してください。
Ørjanヨハンセン

gプログラムのソースをメモリから直接読み取るため、Befunge quinesでは許可されていないと思いましたか?

7

分裂2、10バイト

"L;L'!+!'_

オンラインでお試しください!

これは印刷します:

_'!+!'L;L"

オンラインでお試しください!

およびその逆。

説明

これはリバース・クインの修正版です。これ!は、印刷に使用され、見積もりからコードポイントが1つだけ離れているという点で、私たちにとって有利に機能しています"。これにより、見積もり印刷セクションを回文('!+!')にすることが容易になります。最初のコードから始めましょう:

"L;L'!+!'_

このプログラムには、Lsに2つのエントリポイントがあり、それぞれ左方向のアトムを作成します。しかし、正しいものはすぐにヒットし、;破壊します。左のものは文字列モードに入り、最後まで折り返して、コード全体(を除く")を前から後ろに出力します。それはすでに私たちに与え_'!+!'L;Lます。あとはを印刷するだけ"です。_無視することができ'!、原子の質量を33(のコードポイント!)に+設定し"、それをに増分して!出力します。これですべての出力が完了しました。'Lセットのコードポイントの原子質量Lが、それは無関係です。;このアトムも破棄します。アトムは残っていないため、プログラムは終了します。

さて、逆の方法で:

_'!+!'L;L"

繰り返しますが、2つのエントリポイントがありますが、1つの原子がすぐに破棄されます。今回は!+!'最初にセクションを移動するので、見積もりを印刷することから始めます。'_再び無関係ですが、我々は必要_を避けるために、ここで(またはいくつかの他の役に立たない文字)を'エスケープ"。アトムは最後まで折り返され、文字列モードでソースコードを1回トラバースして残りのプログラムを逆方向に出力します。これLは無視され;、アトムを破棄してプログラムを終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.