逆引用符


29

この課題の見通しは次のとおりです。

  • プログラムが正常に実行されている場合は、スピーチマーク("-二重引用符)内のすべてのコードを印刷する必要があります。
  • プログラムが二重引用符で囲まれている場合(スピーチマークが逆になっている場合)、通常は引用符で囲まれていないコードを印刷する必要があります。

例えば:

次のコードがあるとしましょう:

fancyStuff("myCode"); "I like".isGreat();

実行すると、次の出力が期待されます。

myCode
I like

ただし、引用符で囲むと、次のようになります。

"fancyStuff("myCode"); "I like".isGreat();"

このコードを実行すると、予想される出力は次のようになります。

fancyStuff(
); 
.isGreat();

明らかに、上記の例はどの言語でも機能的な応答ではありません。あなたの仕事は、この方法で実行するコードを書くことです。

ルール

  • 標準の抜け穴が適用されます。
  • 印刷された値は、引用された形式と引用されていない形式の両方で、空でないか、空白のみで構成されている必要があります。これは、すべてのプログラムが少なくとも1組の引用符を含む必要があることも意味します。
  • ただし、末尾の/先行する空白は許可されます。
  • 独自のコード、必要なファイル名などを見ていません。
  • 一致しない引用符は許可されません
  • 複数の文字列がある場合、それらは改行として印刷されるか(例のように)、または他の人間が読める方法で印刷されます-配列やオブジェクトはありません
  • これはであるため、バイト単位の最短回答が優先されます。

一致しない引用符は許可されますか?
負の

3
@GezaKerecsenyiでは、セパレーターが必要ですか、それとも単純に文字列を連結できますか?
アウトゴルファーのエリック

9
配列人間が読める形式ではありませんか?
小麦ウィザード

4
コードに表示されるのと同じ順序で文字列を出力する必要がありますか?
シャギー

1
私はあなたが何であっても印刷していた場合、これは少し複雑だっただろうと思わない引用符で
ジョー・キング

回答:


28

Python 2、20バイト

print";print'print'"

tshのおかげで-7バイト

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


古い答え:

Python 2、27バイト

'';print";print 2*"'';print

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

この答えの背後にある思考の流れ:

何かを印刷する必要があるため、単純な印刷から始めます

print"a"

また、逆のケースで何かを印刷する必要があります。引用符の内側に印刷します。

print"print"

この時点では、非反転のケースはかなり良好です。反転したケースに注目しましょう。ここで、文字列printから始めます。この文字列の直後にprintステートメントを続けることはできません。これをセミコロンで修正しましょう。

print";print"

いい物。例外として、反転コードは実際には何も印刷しません。print引用符で終わるため、最初に印刷する必要がありますが、引用符で終わるため、2番目の引用符の後にあるものも印刷します。これを回避する明白な方法はprint、最後の文字列に2 を追加して乗算することです。

print";print 2*"print

これで、反転したコードは正常に機能しますが、最初の引用の前のセクションと2番目の引用の後にあるセクションは、将来の変更を通じて同じままにする必要があるという事実に注意する必要があります。非反転コードに関しては、構文エラーがスローされます-もう一度、式を区切るためにセミコロンを導入する必要があります。

;print";print 2*";print

Pythonはその孤独なセミコロンの見た目があまり好きではないので、最初のセミコロンと最後のセミコロンの前に挿入された同じノーオペレーション式の2つでヘビの飢えを満たす必要があります。最初のケースではほとんどの式が正常に機能しますが、2番目のケースでprint";print 2*"は、何も壊さずに非反転コードに続く必要があります。を使用できます''。これは、前の文字列と単純に連結されます。

'';print";print 2*"'';print

5
print(";print('print()');")また、27バイト、また、Pythonの3である
TSH

2
@tshこのコードは、20バイトのPython 2ソリューションを明らかにします。
負の

19

CSS、66バイト

body:after{content:"{}body:after{content:'body:after{content:}'}"}

"body:after{content:"{}body:after{content:'body:after{content:}'}"}"

CSSではそれほど多くの質問を解決できないかもしれません...


body:afterいくつかの実装でも動作すると思われますか?
麻琴しえる

@ShieruAsakotoそうですね。:after下位互換性の理由でほとんどのブラウザで利用可能
tsh

@Shaggyしかし、HTMLとCSSの両方が提供されている場合、「ソースコードを引用符で囲む」方法を定義するのは困難です。
tsh

@tshそれは大丈夫です-私はそのようなユニークな答えを期待していなかったので、ルールで複数のファイルについて指定しませんでした!
ゲザケレクセニー

10

HQ9 + [下記の注を参照]、1016バイト

"こんにちは世界""""""""""""""""""""""""""""""""""""""""""""""" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""こんにちは世界"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""こんにちは世界"""""""""""""""""""""""""""""""""""こんにちは世界"""""""""""""""""""""""""""""""""""こんにちは世界

https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995の実装を使用し、WindowsでMinGW GCC 5.3.0を使用してインタープリターをコンパイルします。プログラムを終了するにはCの未定義の動作が必要なので、他のバージョンのコンパイラで動作するかどうかはわかりません。バッファーの長さは1000バイトです。そして、1000バイトを超えるソースコードがトリックを行います。これらがどのように起こったのか分かりません。


7
たぶん、これはこのサイトで最も長いHQ9 +の回答でしょう。(?)
tsh

1
「プログラムを終了するには、Cの未定義の動作が必要です」未定義の動作は未定義です。何でもできます。
ソロモンウコ

C18標準の4ページによると「未定義の動作の可能性は、予測不可能な結果で状況を完全に無視することから、環境に特有の文書化された方法での翻訳またはプログラム実行中の動作(診断メッセージの発行ありまたはなし) )、翻訳または実行の終了(診断メッセージの発行)。」
ソロモンウッコ

@SolomonUckoしかし、このサイトではコンパイラ/インタープリターによって言語を定義しています。そして、少なくとも1つのコンパイラー/インタープリターが正しい結果を生成する限り、答えは問題ありません。
9:09のtsh

9

05AB1E、4 バイト

"A"§

セパレータなしで連結された出力。

オンラインそれを試してみたり、周囲の引用符でオンラインにしてみてください

説明:

        # Program without surrounding quotes will output string "A"
"A"     # Push "A" to the stack
   §    # Cast it to a string
        # (output the top of the stack implicitly as result)

        # Program with surrounding quotes will output string "§"
""      # Push an empty string to the stack
  A     # Push the alphabet to the stack: "abcdefghijklmnopqrstuvwxyz"
   "§"  # Push "§" to the stack
        # (output the top of the stack implicitly as result)

残念ながら、これはルール2に違反しています。コードに空の引用符を含めることは問題ありませんが、囲まれた形式と囲まれていない形式の両方に、空でない引用符が少なくとも1つ必要です。
ゲザケレクセニ

@GezaKerecsenyiおっと、「引用形式と非引用形式の両方で」という部分を過ぎて読んでください。今すぐ修正する必要があります。
ケビンクルーッセン

6

Japt、4バイト

"P"s

引用符なしまたは引用符付きで試してください

Pは空の文字列のJapt変数であり、sメソッドは文字列をスライスします-引数なしで、何もしません。


または、それほど些細なことではありません。

"+"u

引用符なしまたは引用符付きで試してください

最初の文字+は大文字で、2番目のu文字は空の文字列に追加されます。


3
制限に違反するものが少ないため、この質問の最小スコアは4であることに注意してください。
ジョーキング

5

C#の(ビジュアルC#コンパイラインタラクティブ)113の 112 107 70 64バイト

Write(".f();static void f(this string s){Write(s+')'+';');}//");

@negative 7のおかげで5バイト節約

引用符なしおよび引用符付き

しばらくして、解決策が複雑すぎることに気付きました。ここに示されている最新のプログラムは、コメント内のプログラムの残りを単に非表示にして、引用符で囲まれたときのエラーを回避します。

引用符で囲まれた場合Write(、拡張メソッドに渡され、拡張メソッドとともにが出力され);ます。


Split()-> Trim()、およびvar a->_
負の7

1
@negativesevenおかげで、私は破棄を使うことを考えたことがありません!
無知の具現化

1
実は@negativeseven、私の解決策は、私の最新の編集を見て、とても複雑にしても必要としなかった
無知の実施の形態

拡張メソッドを使用した64バイト。これが非常にうまくいったことにはかなり驚きました!
負の

1
@negativesevenありがとう!そして、あなたは、チャレンジの一部2のために私のアイデアを与えた:私は変数に外をキャプチャしてから使用していたRemoveInsert、その上に、今私は拡張メソッドを使用することができます!
無知の具現化


4

うーん... Fooは適応性の高い言語です。」「仕事に最適な言語」は控えめな表現です。;)
Kevin Cruijssen

2
それで、基本的に、この課題に対する他のすべての解決策をはぎ取るだけですか?!
シャギー

@Shaggy言語はFooです。このチャレンジでは、少なくとも1組の引用符と予想される両方の出力が空でない場合、Fooでほぼすべてが機能します。だから、"a"b 1"2"また、Fooの中で動作します。Fooインタープリターにもオーバーフローする問題があるため、これまでのところFooポリグロットではないこの課題の唯一の答えはHQ9 +にあります。
jimmy23013

4

> <>18 9バイト

"|o<"r>o|

ジョー・キングのおかげで-9バイト

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

説明

"|o<"r>o|
"|o<"     Pushes the quoted characters onto the stack
     r    Reverses the stack
      >o| Outputs all characters on stack & errors
""|o<"r>o|"
""          No-op
  |         Reverses the IP direction
     "r>o|" Pushes the quoted characters onto the stack (backwards)
  |o<       Outputs all characters on stack & errors

5
コードゴルフへようこそ!
スティーブン

@スティーブンありがとう!
tjjfvi


2

ルーン文字のエンチャント、9バイト

"!""$;"$;

オンラインでお試しください!そして""!""$;"$;"

Kevin Cruijssenから、2回目にやったことを利用して最初の試みを本質的に修正しました。

「fungoidsには決して比類のない引用符がありません」ルールを曲げて、「これについて何か問題があるはずがありません」というルートを曲げて、私自身のコメントで暗示しています:

7バイト

0".""$;

オンラインでお試しください!そして"0".""$;"

通常の状況では、このプログラムは0".""$;0".""$;整数をプッシュするように実行され0、次にstring .が連結し$;0、NOPが空の文字列を連結し、top-of-stack(string .$;0)を出力して終了します。引用符で囲むと、"0".""$;"string- 0、NOP をプッシュし、空の文字列を連結し、スタックの先頭を出力し、終了します(以前に出力されなかった整数0を文字列形式でレンダリングします)。最後"は未実行のままです(元のプログラムの一部ではありません)。

Fungoidには文字列リテラルがありません。「文字列として自分のソースを読み取る」モードと、「命令ポインターがソース境界に達しました」ルール(通常はエッジラップ)を切り替えるコマンドがあるため、同じソースコード-positional-byteは、「文字列の開始」と「文字列の終了」の両方の命令として機能し、その行/列全体("それ自体を除く)の文字列リテラルを作成します。


超迅速な回答!私はあなたの提出について何か誤解しているかどうか疑問に思っていますが、私にとって$;は引用されたバージョンの最後に印刷しません。
ゲザケレクセニー

読み直して、ルーン文字そのビットを実行できるかどうか困惑しようとしていることに気付きました。「ペアになっていない」引用符の調査を開始しました。例("$;および""$;"Runicラップアラウンドクオートとペアリング)。
Draco18s

@GezaKerecsenyi更新されたプログラムが規則に違反しているかどうかを教えてください。
Draco18s

うーん、これはどのように有効ですか?引用符のないプログラム!.(これは正しい)ですが、引用符のあるプログラムは出力すべきではありません0$;か?PS:私はすべてのルーン文字エンチャントを知らないが、私は次のようになり有効であると考え、あなたの現在のレイアウトに基づいて潜在的修正0"!""$;"$;出力!$;としては、または出力を0$;引用符で囲まれている場合)。編集:実際には0、出力!$;とをドロップできると思います$;
ケビンクルーッセン

1
@KevinCruijssen $は「スタックの先頭を印刷」して;終了します。しかし、あなたは本質的に有効な答えを得ました。
Draco18s





0

Japt、4バイト

"P"u

引用符なしで、文字列Pを大文字に変換します。引用すると、印刷されuます。

それを試してみてください

Japt、4バイト

"P"w

引用符なしで、文字列を反転しますP。引用すると、印刷されwます。

それを試してみてください



@Shaggy当社のソリューションは少し異なります。この課題に対する多くの異なるソリューションがあります
無知の

Q代わりに使用してくださいP、それはよりメタです!;)
シャギー

0

R、16バイト

 ";print(";");" 

上記のコードは追加の引用符で囲まれておらず、先頭と末尾の両方のスペースがあることに注意してください。

試してみてください(ラップされていないバージョン)


リンクされたプログラムはラップされていないバージョンであるというメモを追加できます。
ジョナサンフレッチ

また、先頭と末尾のスペースに関するメモを追加します。そうでなければ、それらに気付くのは難しいです。
mbomb007

編集、提案をありがとう!
ジェームズオットー

0

AppleScript、9バイト

return"&"

説明:

return"&"    -- returns "&"

引用:

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