それ自体の部分文字列ですか?


21

文字列を指定すると、その文字列がプログラムのソースコードの部分文字列かどうかを返します。

標準のクインルールが適用されます。つまり、独自のソースコードを読むことはできません。入力の長さは、プログラムの長さ以下であることが保証されています。2つの異なる値を返すことができますが、必ずしも真偽値ではありません。完全なプログラムではなく、関数を送信することもできます。

これはので、最短のコードが勝ちます!

ソースコードがの場合、print(input() = False)Trueを返しますがnt(i、Falseを返しますtupn



2
@totallyhuman、ほとんどの課題と同様、はい。
コメアリンガーアーイング


10
@StanStrum重複を指摘するのではなく、人々が興味を持つかもしれない関連する課題を示し、右側のサイドバーにそれらを表示することです。
完全に人間

1
入力を空にすることはできますか?(実際には、コードを空にすることはできますか?)
リン

回答:



6

JavaScript、25バイト

f=s=>('f='+f).includes(s)

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

私は個人的にはこのファンではありませんが、許可されています。

代替(無効?)ソリューション、19バイト

これは正規表現として入力を受け取ります。

f=s=>s.test('f='+f)

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


それはそれ自身を読みませんか?
アダム

1
@Adámcodegolf.meta.stackexchange.com/ a
totallyhuman

明示的に言及する目的は何(Node.js)ですか?ブラウザでも動作しませんか?

@ThePirateBayはChromeで期待どおりに動作します。
-steenbergh

1
皆さんは先を考えています。それはTIOテンプレートからのものです。:P
完全に人間

5

Java 8、124 112バイト(関数)

p->{String s="p->{String s=%c%s%1$c;return s.format(s,34,s).contains(p);}";return s.format(s,34,s).contains(p);}

ここで試してみてください。


これは代わりに完全なプログラムです(Javaなどの一部の言語では完全なプログラムには非常に冗長な必須の定型コードが必要なので、PPCGで機能が許可される理由の1つを確認します)。

Java 8、226 214バイト(完全なプログラム)

interface M{static void main(String[]a){String s="interface M{static void main(String[]a){String s=%c%s%1$c;System.out.print(s.format(s,34,s).contains(a[0]));}}";System.out.print(s.format(s,34,s).contains(a[0]));}}

ここで試してみてください。


説明:

  • String sは、未フォーマットのソースコードが含まれています。
  • %sを使用して、このStringをそれ自体に入力するために使用されますs.format(...)
  • %c%1$cおよびは34、二重引用符のフォーマットに使用されます。
  • s.format(s,34,s) すべてをまとめます。

そして、.contains(...)このソースコードに指定された入力が含まれているかどうかを確認するために使用されます。


これは、「オンラインで試す」ときにすべての文字列に当てはまります。
MichaelK

1
@MichaelKarnerforsは私のためではありません...毎回引数を追加しないのですか?1つの引数のみが使用されます。新しいテストを行うたびに引数を変更してプログラムを実行する必要があります。
オリビエグレゴワール

@OlivierGrégoireあなたは正しいです、私は間違ったTIOページを使用しました。ありがとうございました。:)
MichaelK

3

バッシュ、43、28のバイト

[[ $BASH_COMMAND = *"$1"* ]]

オンラインで試す


私はBashを知りませんが、多くの空白を削除することでこれをさらに進めることができますか?
14:30にコイナーリンガーをケアします。

@cairdcoinheringaahingそうは思いませんが、typesetこのAFAICTのようにフォーマットします。オンラインでお試しください!
エリックアウトゴルファー

しかし、別の手法を使用して改善される可能性があります
ナウエルフイユ

ちょうど別の解決策た
ナウエルFouilleul

何を$1するの?
コメアリンガーアーイング

2

Haskell、92バイト

import Data.List;f s=isInfixOf s$(++)<*>show$"import Data.List;f s=isInfixOf s$(++)<*>show$"

オンラインでお試しください!標準的なクインの明らかな拡張。インポートを削除するのはいいことですがisInfixOf、より短いバイト数で計算できるとは思えません。



2

QBIC、28バイト

?instr(B+B,;)#?instr(B+B,;)#

入力がソースの部分文字列でない場合は0を出力し、そうでない場合はXは部分文字列の(最初の)インデックスです。

説明

Latter part:
#?instr(B+B,;)#   Define a string literal B$ with a copy of the source

First part:
?                 PRINT
 instr(   , )     the index of
           ;          the cmd line parameter A$
       B+B            in B$ concatenated with itself

#QBICで文字列リテラルを定義し、最初に使用可能な文字列変数に割り当てます。これはB$このプログラム内にあります。なぜなら、A$は既に;(cmd行から文字列を読み取る)に取られているからです。次に、区切り文字までのすべてがリテラルに入力されます。区切り文字はバックティックです-これは、文字列に含まれない唯一のASCII文字にもなります。この場合、リテラルはQBICの自動クローズ機能によってコードの最後で終了するため、QBICにバックティックは必要ありません。QBICのリテラルの詳細については、ショーケーススレッドを参照してください。


Aこの文脈では何ですか?
コイナーリンガーリング

@cairdcoinheringaahing私の側に少しエラーがBありますが、そうすべきであり、説明が追加されます。
-steenbergh

2

ゼリー、10バイト

“;⁾vṾƓẇ”vṾ

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

使い方

“;⁾vṾƓẇ”vṾ  Main link. No arguments.

“;⁾vṾƓẇ”    Set the left argument and the return value to ';⁾vṾƓẇ'.
         Ṿ  Uneval; yield '“;⁾vṾƓẇ”'.
        v   Dyadic eval; eval ';⁾vṾƓẇ' with argument '“;⁾vṾƓẇ”'.

  ⁾vṾ       Yield 'vṾ'.
 ;          Append it to '“;⁾vṾƓẇ”', yielding the source code.
     Ɠ      Read a string from STDIN.
      ẇ     Check if it's a substring of the source code.

1

ジュリア、72バイト

私は今、人々がクインの問題が古典的なクインの単なるバリエーションであると言うときの意味を理解しています。

x="~y=contains\"x=\$(repr(x));\$x\",y)";~y=contains("x=$(repr(x));$x",y)

説明

#Defines x to be the next line of the source, with the help of escaping characters
x="~y=contains\"x=\$(repr(x));\$x\",y)"; 
#Interpolates together a comparison string, including repr(x), the re-escaped from of x, and x itself, for comparison. 
~y=contains("x=$(repr(x));$x",y)


0

05AB1E、17 バイト

0"D34çýIå"D34çýIå

を追加することによるデフォルトの 変更。0"D34çý"D34çý

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

説明:

0                    # Push 0 to the stack
                     #  STACK: [0]
 "D34çýIå"           # Push the string 'D34çýIå' to the stack
                     #  STACK: [0, 'D34çýIå']
          D          # Duplicate this string
                     #  STACK: [0, 'D34çýIå', 'D34çýIå']
           34ç       # Push '"' to the stack
                     #  STACK: [0, 'D34çýIå', 'D34çýIå', '"']
              ý      # Join the stack by this '"' delimiter
                     #  STACK: ['0"D34çýIå"D34çýIå']
               I     # Take the input
                     #  STACK: ['0"D34çýIå"D34çýIå', 'Iå"D']
                å    # Check if it's a substring of the source code
                     #  STACK [1]
                     # (Output the top of the stack implicitly)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.