ポリグロットクインを後方に転送します。


9

あなたは一つの言語でそのソースコードとソースコードを出力ポリグロットしなければならない後方別では。通常のルールとは異なり、現在のファイルを読み取るか、組み込みを使用して提出物のソースコードを取得し、1つの言語でそれを逆にすることができます。ソースコードを回文にすることはできません。

たとえば、ソースコードがの場合、ある言語と別の言語でabcxyz出力する必要があります。コードがの場合、回文であるため無効です。abcxyzzyxcbaabcxyzyxbca

幸運を!


3
通常のルールは理由があります。組み込みのクインを許可すると、この課題が広範になりすぎる可能性が高く、パリンドロームのソースコードを許可すると、両方の言語でフォワードクインである回答が許可されます。
Erik the Outgolfer 2017

@EriktheOutgolfer palindromesは許可されなくなりました。
programmer5000

1
@EriktheOutgolferああ、ソースコードを回文にすることはできませんか?
Luis Mendo 2017

2
最初の人に通常のクインのルールを破ることなくこのチャレンジを完了するための報奨金を提供するべきだと思います。(多分50担当者ですか?)
clismique 2017

1
私は「1つの言語で」を読んで、両方の言語がソースコードを読み取る場合を明確に禁止していますが、現在のトップ投票の回答はそれを正確に行います。許可するかどうかを明確にするために編集できますか?
hvd 2017

回答:



6

Python 2 / Python 3、71バイト

lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]

組み込みのquineを使用しません。

一般的に私を目覚めさせてくれたovsに感謝します。


lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]71バイト
ovs

@ovsああ、もちろん、私はそれについてどう思いましたか。
Erik the Outgolfer 2017

6

バッチ/ bash + tac、39バイト

:;tac -r -s '.\|'$'\n' $0;exit
@type %0

転送をバッチで出力します。説明:Batchは最初の行をラベルとして認識して無視しますが、2番目の行はソースファイルをSTDOUTにコピーするだけです。(拡張子を含むファイルを呼び出すか、に変更%0する必要があることに注意してください%~f0。)bash4つのコマンドが表示されます。

  • :何もしない(と同じtrue
  • tac -r -s '.\|'$'\n' $0
    • -rプットtac正規表現モードに
    • -s 正規表現を指定します
    • '.\|'$'\n' 正規表現で構成され、
      • . 改行以外の任意の文字
      • \| または
      • $'\n' 改行
    • その結果tac、ファイルが行ではなく文字に分割されます。
  • exit 4番目のコマンドを無視して、スクリプトを停止します
  • @type %0 (無視)

最初の行をで置き換えることができると思います:;rev $0|tac;exit。また、ヘッダーは代わりにBatch / sh + util-linux + coreutilsと表示する必要があります。
Erik the Outgolfer 2017

@EriktheOutgolfer $'\n'はバシズムであり、rev $0|tac改行を正しく反転しませんtac。パッケージに含まれていることが本当に重要ですか?
ニール

$'\n'私が提案した代替品には存在せずrev $0|tac、私のために機能します。また、混乱が生じる可能性があるため、個々のユーティリティではなく、パッケージを指定する方がよいと思います(たとえば、どのパッケージtacか)。
Erik the Outgolfer 2017

@EriktheOutgolfer オンラインで試しください!間違っている。オンラインでお試しください!(しかしもっと微妙に)。
ニール

説明していただけますか?
programmer5000

3

PHP&Retina、2バイト

1

GilleのPHP&GolfScript回答と同じです。

PHPはコードを読み取り、それを直接出力します。Retinaは、入力内の空の文字列の一致を置き換えて1に置き換え、それを改行で出力します。


2

JS(ES5)、JS(ES6)、94バイト

function f(){try{eval("x=(f+'f()').split``.reverse().join``")}catch(e){x=f+"f()"};return x}f()

組み込みのクインを使用しません。JS関数がコードに文字列化するという事実を使用します。たぶんもっとゴ​​ルフできます。


1

ソースコードの読み取りを許可する場合、それは実際にはクインではありません。

PHPおよびsh + util-linux、6バイト

rev $0

通常のゴルフ言語では2バイトでできると思います。


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