実行時に独自のソースコードを出力するプログラムを作成します。簡単そうですね。
キャッチは、ソースコードが逆になったときに、プログラムが「Hello、World!」を出力する必要があることです。正確に、引用符なし。
これはコードゴルフであるため、バイト数が最も少なくなります。
編集:あなたの馬は適切な馬でなければなりません。
実行時に独自のソースコードを出力するプログラムを作成します。簡単そうですね。
キャッチは、ソースコードが逆になったときに、プログラムが「Hello、World!」を出力する必要があることです。正確に、引用符なし。
これはコードゴルフであるため、バイト数が最も少なくなります。
編集:あなたの馬は適切な馬でなければなりません。
回答:
Upxp"!dlroW ,olleH"
U
U
次の文字列U
(この場合はソースコード)が満たされるまで、先頭に文字列をキャプチャします。p
アイテムを印刷しx
、終了リンクです。逆にすると、これは次のようになります。
"Hello, World!"pxpU
これは、文字列をキャプチャし、で印刷しp
、再びでプログラムを終了しx
ます。
U
U
暗黙的にプッシュしますか?ಠ_ಠ
U
コマンドは「チェーンリンクキャプチャコマンド」です。それはクイニング用に作られていませんが、それは私がそれをクイニングに使用するのを止めません。:P
p
エンコードの一部であるビットが出力を行うと思いました。
p
、x
数えません。たとえば、コードで印刷する必要がある場合でも、最短のSMBFクインは依然としてカンニングクインと見なされます。ただし、Martinに説明を求める価値があるかもしれません。
f=_=>/\//g&&"f="+f||"!dlroW ,olleH">=_
_=>"Hello, World!"||f+"=f"&&g//\/>=_=f
逆にすると、文字列を返す匿名関数になりますHello, World!
。
正規表現/\//g
は反転>=_=f
されるとコメントになり、構文的に無効なものを反転されたコードでコメントアウトできます。
=_=
。
trela=a=>alert("trela="+trela+"\ntrela\n``")//
`!dlroW ,olleH`
trela
``
1行目はtrela
、実行時にプログラムのソースコードを出力する関数を定義しています。行2は割り当てられていない文字列で、何もしません。3行目と4行目でtrela
は、テンプレート文字列の構文を乱用しています。
``
alert
`Hello, World!`
//)"``n\alertn\"+alert+"=alert"(trela>=a=alert
行1は割り当てられていない文字列で、何もしません。2行目と3行目は、テンプレート文字列の構文を乱用して印刷しますHello, World!
。行4はコメントです。
``
不要ですか?
trela
前方バージョン(QUINEを印刷)機能を
``
が議論だったことに気づかなかった。涼しい。
trela
辺りを見るのに慣れる必要があるように感じます...> _>
{`".;1$~]"}"!dlroW ,olleH".;1$~]
]~$1;."Hello, World!"}"]~$1;."`{
"` '。〜]'#\ "!dlroW、olleH"。〜]
末尾に改行が1つあります。ここで試してみてください。
逆に:
]〜。 "Hello、World!" \# ']〜.'` "
"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'
逆に:
'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"
STDOUTへの出力。より良い馬のフレームワークを見つけるまで、これは今のところしなければなりません。
"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"
これには、クイン文字列が含まれます。逆に、これはスタックにプッシュされますが、出力されません。
34¤¤,,,,,,,,,,,,,
これにより、引用文字がスタックにプッシュされ、出力するものがなくなるまで結果が2回出力されます。逆に、これは既にスタックにある文字コードを印刷します。
% 'H'e'l'l'o',' 'w'o'r'l'd'!'
これは一番上のスタック項目をポップし(逆にスペース文字をポップします)、一連の文字コードをスタックにプッシュします(逆に、これらの文字コードは一連のによって印刷されます,
)。
この回答では、@MartinBüttnerによる優秀な馬の恥知らずな適応
'!+O!'!d'!l'!r'!o'!W'! '!,'!o'!!l'!e'!H'R"
そして逆に
"R'H!'e!'l!!'o!',!' !'W!'o!'r!'l!'d!'!O+!'
クインバージョンでは、アトムはR
見出しの右から始まります。"
開始は、次にラップモード印刷"
(自身を)。これは、を除くすべてを出力します"
。 '!+
アトムをcharに設定し"
ます。 O
それを出力し、プログラムを終了するアトムを破壊します。
反転したバージョンはR
再びHello, World
設定され、各文字のアトムを開始し、アトム!
を破壊せずに出力します。最後のキャラクターの場合!
、プリントO
はアトムを破壊します。
print(lambda x:x+repr(x)+")#'!dlroW ,olleH' tnirp")('print(lambda x:x+repr(x)+")#\'!dlroW ,olleH\' tnirp")(')#'!dlroW ,olleH' tnirp
print 'Hello, World!'#)'()"print '\Hello, World!'\#)"+)x(rper+x:x adbmal(tnirp'()"print 'Hello, World!'#)"+)x(rper+x:x adbmal(tnirp
前半は1行のクインであり、その後に#
前半を単純な後半から分離するコメントが形成されます。
_='_=%r;print _%%_#"!dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp
_='_=%r;print _%%_#"dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp