お問い合わせ回答者


12
  • オリジナル:https : //james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html

    Alain Colmerauerは、論理プログラミング言語Prologを設計しました。彼の目標は、2歳の子供と同じくらいインテリジェントなプログラミング言語を作成することでした。彼が目標を達成したことを証明するために、彼はすべての問い合わせに対して「いいえ」と答えるPrologプログラムを提示しました。
    何でも聞いて!
    ?-

  • (もちろん彼はしませんでした。)あなたの仕事は、Alain Colmerauerのプログラムよりもインテリジェントなプログラムを作成することです。これはPrologにある必要はありません。

仕様

  • 入力が終了し?、少なくとも1つある,場合、最後から最後,までのテキストを返します?

  • それ以外、入力が?returnで終了する場合No

  • それ以外の場合、戻りYesます。

ルール

  • 標準的な抜け穴はありません。
  • 入出力は、標準の入出力メソッドを介して取得されます。
  • あなたのプログラムは、少なくとも1つの問い合わせが必要です。
  • 処理された照会を出力する必要があります。
  • YesNoのは、実施例において、大文字と小文字が区別されています。
  • 入力にが含まれる場合、入力には?1つのみが含まれ、?常に最後の文字になることが保証されます。
  • 入力は常にフレーズ/センテンスになります。このフレーズ/文は文字のみが含まれることはありません,?、例えば,?、および,?有効な入力ではありません。(とにかく、サブミッションはそれを実装するかもしれませんが、これらの場合、フレーズ/センテンスは空の文字列です。)
  • また、入力がで終わることはありません,?
  • 最後の,直後または空白の直前に空白がある場合は?、出力に含める必要があります。

Hmm. -> Yes
Alright, -> Yes
Ask me anything! -> Yes
Ask me a question, please! -> Yes
Are you okay? -> No
No? -> No
Hey,does this program work? -> does this program work

Quotes in the following test cases should not be outputted.
They are used as a delimiter here.

Okay, so this does work ? -> " so this does work "
Please, add, a, test, case, containing, multiple, commas? -> " commas"

得点

これはであるため、バイト単位の最短回答が優先されます。


6
入力にが含まれる場合、?1つだけが存在し、常に最後の文字になることが保証されていますか?
シャギー

3
複数のコンマを含むテストケースを追加してください。
マナトワーク

8
回答を早期に受け入れると、他のユーザーが新しい回答を投稿することを思いとどまらせる可能性があります。
アーナルド

3
You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.したがって、これらのテストケースは不要です。

8
あるends with ,?有効な入力?
GammaFunction

回答:


6

05AB1E20 19 バイト

'?åi',¡”€–”0ǝθ¨ë”…Ü

@Grimyのおかげで-1バイト。

オンラインそれを試してみたり、すべてのテストケースを確認してください

説明:

'?åi          '# If the (implicit) input contains a "?":
    ',¡       '#  Split the (implicit) input on ","
       ”€–”    #  Push dictionary string "Not"
           0ǝ  #  Insert it at the first position (index 0) in the list
       θ       #  Then get the last item of the list
        ¨      #  And remove the last character
               #  (either the "?" of the original input; or the "t" in "Not")
      ë        # Else:
       ”…Ü     #  Push dictionary string "Yes"
               # (after which the top of the stack is output implicitly as result)

この05AB1Eのヒント(「辞書の使用方法」セクション)を参照して、”€–”is "Not"”…Üis を理解してください"Yes"



@Grimyああ、スマート思考。ありがとう!:)
ケビンクルーッセン

8

Python 3、62バイト

lambda s:['Yes',*s[:-1].split(','),'No'][~(','in s)*('?'in s)]

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

表現~(','in s)*('?'in s)と評価さ0(つまり、'Yes'文字列が含まれていない場合)'?'、それ以外-1(すなわち'No'文字列が含まれていない場合)','、そうでない場合は-2(つまり、最後の文字を除いた文字列の最後のカンマで区切られた部分)。


5

JavaScript(ES6)、 53  52バイト

s=>(m=s.match(/(,?)([^,]*)\?/))?m[1]?m[2]:'No':'Yes'

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

コメント済み

s =>                  // s = input string
  ( m = s.match(      // m is the result of matching in s:
  //     +------------>    an optional comma
  //     |     +------>    followed by a string containing no comma
  //     |     |   +-->    followed by a question mark
  //   <--><-----><>     
      /(,?)([^,]*)\?/
  )) ?                // if m is not null:
    m[1] ?            //   if the comma exists:
      m[2]            //     output the string following it
    :                 //   else:
      'No'            //     output 'No'
  :                   // else:
    'Yes'             //   output 'Yes'

WelpはJSソリューションを探していましたが、最終的にこのサイズの2倍になりました。
ランダムな男

4

23 22バイト

¿№θ?¿№θ,⁻⊟⪪θ,¦?¦No¦Yes

オンラインでお試しください!リンクは、コードの詳細バージョンです。編集:@KevinCruijssenのおかげで1バイトを保存しました。説明:

¿№θ?

文字列に?s が含まれていますか?

¿№θ,

が含まれていますか,

⊟⪪θ,

,sで文字列を分割し、最後を取ります。

⁻...?

を削除し?、結果を出力します。

No

がなければ,、出力しますNo

Yes

がなければ?、出力しますYes


-1変更Print(Join(Split(Pop(Split(q, ",")), "?"), w)Print(Minus(Pop(Split(q, ",")), "?");
ケビンCruijssen

@KevinCruijssenありがたいことに、それを忘れてMinusいた。また、2つのセパレーターを節約できたことに満足していました。
ニール


3

Pyth、25バイト

?qeQ\??}\,QPecQ\,"No""Yes

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

?q                          # if       ==
  eQ\?                      #    Q[-1]    "?":
      ?}                    #   if     in   
        \,Q                 #      ","    Q:
             cQ\,           #     return split(Q, ",")
            e               #                         [-1] (last element)
           P                #                             [:-1] (remove the trailing ?)
                 "No"       #   else: return "No"
                     "Yes"  # else: return "Yes" (last " implicit)



3

網膜32 28バイト

^'?K`Yes
.+,(.*)\?
$1
'?K`No

@Neilからのヒントを含む -4バイト。

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

説明:

   K`       # Replace any (implicit) input, which does
^           # NOT
 '?        '# contain a "?"
     Yes    # with "Yes"

.+          # Match 1 or more characters
  ,         # followed by a comma
    .*      # followed by zero or more characters,
   (  )     # (captured in capture group 1)
       \?   # followed by a (trailing) "?"
$1          # And replace it with just the match of capture group 1,
            # (so everything between the last comma and trailing question mark)

  K`        # Replace any remaining string, which does
'?         '# contain a "?"
    No      # with "No"

            # (after which the result is output implicitly)

Retina 1のKステージには条件が組み込まれていることをご存知ですか?しなかった。おそらく数バイト節約できます。
ニール

@Neil私は、完全に正直になるためにK、条件付け&する方法がわからない。私はこのようKに一致する正規表現を使用する方法を知っていますが、/の三項if-elseを模倣する条件と組み合わせるにはどうすればよいですか?YesNo
ケビンCruijssen

必要&はありません。これは私を驚かせたものであり、文字列またはさらに良いことに、文字で一致することができます?
ニール

@Neilだから、このように?これも明らかに32バイトです。
ケビンCruijssen

1
そうではありません。まだ正規表現で一致していますが、代わりに文字列または文字が許可されています。
ニール

2

IBM / Lotus Notesの数式、79バイト

@If(@Ends(i;"?");@If(@Contains(i;",");@Left(@RightBack(i;",");"?");"No");"Yes")

フォーミュラのTIOはありません...

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください


2

Pythonの398の 87バイト

ElPedroのおかげで-9バイト

x=input();o="Yes"
if"?"==x[-1]:o=x[(x.rfind(",")+1):-1]if x.count(",")else"No"
print(o)

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

これは他の答えにしっかりと打ちのめされていますが、Pythonでゴルフをもう少し試しています。アドバイスをいただければ幸いです!


1
1つのprintを使用して割り当てを回避し、ラムダを使用してステートメントを1つにした後、インラインifステートメントをリストインデックスに短縮し、使用する条件を短縮してinから、既存の答え
ジョーキング

オリジナルのアプローチを変更せずにゴルフを数回行って87に下げるオンラインで試してみてください!
エルペドロ

に置き換えif x.count(",")if~x.find(",")、1バイト節約できます。文字列が見つからない場合にstr.find評価し-1ます。これを単項演算子で補完すると0、部分文字列が存在しない場合にのみ、結果になります。または、if","in x 4バイト少なくして置き換えることができます。
-Jitse







1

パイソン266の 63 62バイト

lambda i:("Yes",("No",i[i.rfind(",")+1:-1])[","in i])["?"in i]

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

-3更新された説明を見つけた後、「入力には1つだけがあり、常に最後の文字になります。」

-1 @ChasBrownのおかげで

基本的には、Lotus Notesの回答の移植版です。不思議なことに、上記の説明はNotesの回答を助けません。なぜなら、@Endsが4バイトよりも安いからです@Contains@In関数がある場合のみ...




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