पूछताछ करने वाला


12
  • मूल: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-write.html

    Alain Colmerauer ने लॉजिक प्रोग्रामिंग लैंग्वेज Prolog डिज़ाइन की। उनका लक्ष्य एक प्रोग्रामिंग भाषा बनाना था जो दो साल के बच्चे की तरह ही बुद्धिमान हो। यह साबित करने के लिए कि वह अपने लक्ष्य में सफल हो गया है, उसने एक प्रोलॉग कार्यक्रम प्रस्तुत किया जो सभी पूछताछ के लिए "नहीं" संसाधन का उत्तर देता है।
    मुझसे कुछ भी पूछो!
    ? -

  • (निश्चित रूप से उन्होंने नहीं किया।) आपका काम एक प्रोग्राम बनाना है जो एलेन कॉलमेरॉयर के कार्यक्रम से अधिक बुद्धिमान हो। यह प्रोलॉग में नहीं होना चाहिए।

विशिष्ट तथ्य

  • यदि इनपुट के साथ समाप्त होता है ?और कम से कम एक है ,, तो अंतिम ,से पहले तक पाठ वापस लौटाएं ?

  • यदि ?रिटर्न के साथ इनपुट समाप्त होता है, तो एल्स No

  • और, वापसी Yes

नियम

  • कोई मानक खामियां नहीं हैं।
  • इनपुट / आउटपुट हमारे मानक इनपुट / आउटपुट विधियों के माध्यम से लिया जाएगा।
  • आपके प्रोग्राम को कम से कम 1 जांच लेनी होगी।
  • आपको संसाधित जांच को आउटपुट करना चाहिए।
  • Yesऔर Noकी केस-संवेदी उदाहरण में हैं।
  • आपको गारंटी दी जाती है कि यदि इनपुट में ए शामिल है ?, तो इनपुट केवल एक ही होगा ?और यह हमेशा अंतिम वर्ण होगा।
  • इनपुट हमेशा एक वाक्यांश / वाक्य होगा। इस वाक्यांश / वाक्य में न केवल अक्षर होंगे ,और ?, उदाहरण ,के लिए ?, और ,?मान्य इनपुट नहीं हैं। (हालांकि प्रस्तुतियाँ इसे वैसे भी लागू कर सकती हैं, क्योंकि इन मामलों में वाक्यांश / वाक्य एक खाली स्ट्रिंग है।)
  • इसके अलावा, इनपुट कभी खत्म नहीं होगा ,?
  • यदि अंतिम ,या तुरंत पहले व्हाट्सएप है ?, तो उन्हें आउटपुट में शामिल किया जाना चाहिए।

उदाहरण

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
क्या हम गारंटी देते हैं कि यदि इनपुट में ए शामिल है ?, तो केवल एक ही होगा और यह हमेशा अंतिम चरित्र होगा?
झबरा

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 ,?एक मान्य इनपुट?
गामा फंक्शन

जवाबों:


6

05AB1E , 20 19 बाइट्स

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

-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 टिप देखें (अनुभाग कैसे शब्दकोश उपयोग कैसे करें? ) को समझने के लिए क्यों ”€–”है "Not"और ”…Üहै "Yes"



@Grimy ओह, स्मार्ट सोच। धन्यवाद! :)
केविन क्रूज़सेन

8

पायथन 3 , 62 बाइट्स

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

इसे ऑनलाइन आज़माएं!

अभिव्यक्ति ~(','in s)*('?'in s)के लिए मूल्यांकन करता है 0(यानी 'Yes') यदि स्ट्रिंग एक शामिल नहीं है '?', और कुछ -1(यानी 'No'अगर स्ट्रिंग एक शामिल नहीं है) ',', और नहीं तो -2(यानी अंतिम वर्ण को छोड़कर स्ट्रिंग के अंतिम अल्पविराम से अलग अनुभाग)।


5

जावास्क्रिप्ट (ईएस 6),  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'

वेल्ड, एक जेएस समाधान की तलाश में था, इस आकार के साथ कुछ दोगुना हो गया।
यादृच्छिक आदमी

4

चारकोल , 23 22 बाइट्स

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

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। संपादित करें: सहेजे गए 1 बाइट @KevinCruijssen को धन्यवाद। स्पष्टीकरण:

¿№θ?

क्या स्ट्रिंग में कोई ?एस है?

¿№θ,

क्या इसमें कोई ,एस है?

⊟⪪θ,

स्ट्रिंग को ,एस पर विभाजित करें और अंतिम लें।

⁻...?

?परिणाम हटाएँ और परिणाम को आउटपुट करें।

No

अगर कोई ,s नहीं हैं तो आउटपुट No

Yes

अगर कोई ?s नहीं हैं तो आउटपुट Yes


-1 को बदलने Print(Join(Split(Pop(Split(q, ",")), "?"), w)के लिएPrint(Minus(Pop(Split(q, ",")), "?");
केविन Cruijssen

@KevinCruijssen धन्यवाद, मैं भूल गया Minusथा कि किया था। इसके अलावा, मैं दो विभाजकों को बचाने के लिए खुद को खुश महसूस कर रहा था।
नील





3

रेटिना , 32 28 बाइट्स

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

-4 बाइट @Neil से युक्तियों के साथ ।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

   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)

क्या आप जानते हैं कि रेटिना 1 के Kचरण में एक अंतर्निहित सशर्त है? मैंने नहीं किया। यह शायद आपको कुछ बाइट्स बचा सकता है।
नील

@ नहीं मुझे यकीन नहीं है कि चेन Kऔर सशर्त &पूरी तरह से ईमानदार कैसे हों। मुझे पता है कि इस तरहK से मिलान करने के लिए एक रेगेक्स के साथ कैसे उपयोग किया जाता है , लेकिन मैं इसे सशर्त की नकल करने के लिए सशर्त के साथ कैसे जोड़ता हूं अगर-और के लिए / ? YesNo
केविन क्रूज़सेन

आप की जरूरत नहीं है &, जो मुझे आश्चर्यचकित करता है, और आप बस एक स्ट्रिंग पर मेल कर सकते हैं, या बेहतर अभी भी, एक चरित्र, क्योंकि आप जानते हैं कि किसी भी ?अंत में होना चाहिए।
नील

@ नील, इस तरह? जो कि जाहिरा तौर पर 32 बाइट्स भी है।
केविन क्रूज़सेन

1
काफी नहीं; आप अभी भी एक रेगेक्स पर मेल कर रहे हैं, लेकिन आपको इसके बजाय एक स्ट्रिंग या वर्ण की अनुमति है।
नील

2

आईबीएम / लोटस नोट्स फॉर्मूला, 79 बाइट्स

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

फॉर्मूला के लिए कोई TIO तो नहीं ...

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें


2

पायथन 3 , 98 87 बाइट्स

-9 बाइट्स ElPedro को धन्यवाद

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

इसे ऑनलाइन आज़माएं!

यह अन्य उत्तरों द्वारा ठोस रूप से पीटा गया है, लेकिन मैं पायथन में थोड़ा और अधिक गोल्फिंग कर रहा हूं। सलाह की सराहना की है!


1
आप एक प्रिंट उपयोग कर सकते हैं काम से बचने के लिए है, तो एक लैम्ब्डा उपयोग करते हैं, तो इनलाइन छोटा के बाद से यह अब सिर्फ एक बयान है ifएक सूची अनुक्रमण के बयानों के बजाय और फिर उपयोग करने के लिए शर्तों को छोटा inहै, तो यह सब बाहर फेंक क्योंकि यह करने के लिए बहुत करीब है एक मौजूदा जवाब
जो किंग

गोल्फ के एक जोड़े को अपने मूल दृष्टिकोण को बदलने के बिना इसे नीचे 87 पर लाने के लिए इसे ऑनलाइन आज़माएं!
एलपीड्रो

आप एक बाइट की बचत के if x.count(",")साथ बदल सकते हैं if~x.find(",")। यदि स्ट्रिंग नहीं मिली है तो str.findमूल्यांकन करता है -1। यदि आप इसे अनुपयोगी ऑपरेटर के साथ पूरक करते हैं, तो इसका परिणाम 0केवल तभी होता है जब विकल्प मौजूद नहीं होता है। वैकल्पिक रूप से, आप इसे if","in x 4 बाइट्स कम के साथ बदल सकते हैं ।
जित्स






1

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 72 बाइट्स

x=>x.Last()!=63?"Yes":x.Contains(',')?x.Split(',').Last().Trim('?'):"No"

2 बाइट्स @someone की बदौलत सहेजे गए

इसे ऑनलाइन आज़माएं!


SkipLast(1) -> Trim('?')के लिये -??? बाइट्स जहां तक ​​मैं देख रहा हूं (मेरे सभी प्रयास अलग-अलग संख्याओं में अंतर परिणाम की गणना करने के लिए)
मेरा सर्वनाम

1

पायथन 2 , 66 63 62 बाइट्स

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

इसे ऑनलाइन आज़माएं!

-3 अपडेट किए गए स्पष्टीकरण को स्पॉट करने के बाद "इनपुट में केवल एक ही होगा? और यह हमेशा अंतिम चरित्र होगा।"

-1 @ धन्यवाद के साथ

मूल रूप से मेरे लोटस नोट्स का एक पोर्ट उत्तर है । मजे की बात है, ऊपर उल्लिखित स्पष्टीकरण नोटों के जवाब में मदद नहीं करता है क्योंकि @Ends4 बाइट्स की तुलना में सस्ता है @Contains। अब अगर केवल एक @Inसमारोह था ...


2
उपयोग करके 1 बाइट बचाएंrfind
चास ब्राउन


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.