สอบถามผู้ตอบ


12
  • ต้นฉบับ: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html

    Alain Colmerauer ออกแบบภาษาโปรล็อกตรรกะ เป้าหมายของเขาคือการสร้างภาษาการเขียนโปรแกรมที่ฉลาดเหมือนเด็กสองขวบ เพื่อพิสูจน์ว่าเขาประสบความสำเร็จในเป้าหมายของเขาเขาได้เสนอโปรแกรม Prolog ที่ตอบว่า "ไม่" อย่างมีประสิทธิภาพสำหรับการสอบถามทั้งหมด
    ถามอะไรก็ได้!
    -

  • (แน่นอนว่าเขาไม่ได้ทำ) งานของคุณคือสร้างโปรแกรมที่ฉลาดกว่าโปรแกรมของ Alain Colmerauer สิ่งนี้ไม่จำเป็นต้องอยู่ใน Prolog

ข้อมูลจำเพาะ

  • หากอินพุตลงท้ายด้วย?และมีอย่างน้อยหนึ่ง,ข้อความให้ส่งคืนจากข้อความสุดท้าย,จนถึงก่อนหน้า?จนกระทั่งก่อนสุดท้าย

  • มิฉะนั้นถ้าสิ้นสุดการป้อนข้อมูลที่มีผลตอบแทน?No

  • อื่นกลับมา Yesอื่นกลับมา

กฎระเบียบ

  • ไม่มีช่องโหว่มาตรฐาน
  • อินพุต / เอาต์พุตจะดำเนินการผ่านวิธีการอินพุต / เอาต์พุตมาตรฐานของเรา
  • โปรแกรมของคุณจะต้องทำการสอบถามอย่างน้อย 1 ครั้ง
  • คุณควรส่งออกการสอบถามที่ประมวลผลแล้ว
  • YesและNo 's เป็นกรณี ๆ ในตัวอย่าง
  • คุณรับประกันได้ว่าหากอินพุตมี a ?อินพุตจะมีเพียงหนึ่งอินพุต?และมันจะเป็นตัวละครสุดท้ายเสมอ
  • อินพุตจะเป็นวลี / ประโยคเสมอ วลีนี้ / ประโยคจะไม่เพียง แต่มีตัวละคร,และ?เช่น,, ?และ,?ไม่ได้เป็นปัจจัยการผลิตที่ถูกต้อง (แม้ว่าการส่งอาจนำไปใช้ต่อไปได้เนื่องจากวลี / ประโยคเป็นสตริงว่างในกรณีเหล่านี้)
  • ,?นอกจากนี้การป้อนข้อมูลจะไม่จบด้วย
  • หากมีช่องว่างทันทีหลังจากครั้งสุดท้าย,หรือทันทีก่อนที่?พวกเขาควรจะรวมอยู่ในการส่งออก

ตัวอย่าง

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
เรารับประกันได้หรือไม่ว่าหากอินพุตประกอบด้วย a ?จะมีเพียงหนึ่งรายการเท่านั้นและจะเป็นอักขระตัวสุดท้ายเสมอ
ขนปุย

3
โปรดเพิ่มกรณีทดสอบที่มีเครื่องหมายจุลภาคหลายตัว
จัดการ

8
การยอมรับคำตอบ แต่เนิ่นๆอาจทำให้ผู้ใช้รายอื่นโพสต์คำตอบใหม่ไม่ได้เพราะดูเหมือนว่าจะมีความท้าทายเกิดขึ้น
Arnauld

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

05AB1E , 20 19 ไบต์

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

-1 ขอบคุณไบต์@Grimy

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

'?å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 โอ้ความคิดที่ฉลาด ขอบคุณ! :)
Kevin Cruijssen

8

Python 3 , 62 ไบต์

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

ลองออนไลน์!

นิพจน์~(','in s)*('?'in s)ประเมินค่าเป็น0(เช่น'Yes') หากสตริงไม่มี a '?'และอื่น ๆ-1(เช่น'No') หากสตริงไม่มี a ','และมิฉะนั้น-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 และจบลงด้วยสิ่งที่เพิ่มขึ้นเป็นสองเท่า
คนที่แต่งตัวประหลาดสุ่ม

4

ถ่าน , 23 22 ไบต์

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

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด แก้ไข: บันทึกแล้ว 1 ไบต์ขอบคุณ @KevinCruijssen คำอธิบาย:

¿№θ?

สตริงมี?s หรือไม่?

¿№θ,

มันมี,s หรือไม่?

⊟⪪θ,

แยกสตริงที่,s และจดล่าสุด

⁻...?

ลบ ?และผลลัพธ์ผลลัพธ์

No

หากไม่มี,s แล้วเอาท์พุทNoการส่งออกแล้ว

Yes

หากไม่มี?s Yesการส่งออกแล้ว


-1 กำลังเปลี่ยนPrint(Join(Split(Pop(Split(q, ",")), "?"), w)เป็นPrint(Minus(Pop(Split(q, ",")), "?");
Kevin Cruijssen

@KevinCruijssen ขอบคุณฉันลืมไปแล้วMinusใช่ไหม นอกจากนี้ฉันรู้สึกยินดีกับตัวเองสำหรับการบันทึกสองตัวคั่น
Neil





3

เรติน่า32 32ไบต์

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

-4 ไบต์พร้อมด้วยเคล็ดลับจาก@Neil @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)

คุณรู้ไหมว่าKเวทีของ Retina 1 มีเงื่อนไขในตัว ฉันไม่ได้ มันอาจช่วยให้คุณประหยัดไม่กี่ไบต์
Neil

@ ไม่มีฉันไม่แน่ใจว่าจะเชื่อมโยงKและเงื่อนไข&ให้ซื่อสัตย์อย่างสมบูรณ์ได้อย่างไร ฉันรู้วิธีใช้Kกับ regex เพื่อจับคู่แบบนี้แต่ฉันจะรวมเข้ากับเงื่อนไขในการเลียนแบบ ternary ถ้า - อื่นสำหรับYes/ No?
Kevin Cruijssen

คุณไม่ต้องการ&ซึ่งเป็นสิ่งที่ทำให้ฉันประหลาดใจและคุณก็สามารถจับคู่กับสตริงหรือตัวละครที่ยังดีกว่าเพราะคุณรู้ว่า?จะต้องมีตอนท้าย
Neil

@Neil ดังนั้นเช่นนี้? ซึ่งมีขนาด 32 ไบต์เช่นกัน
Kevin Cruijssen

1
ไม่มาก คุณยังคงจับคู่กับ regex แต่คุณได้รับอนุญาตให้ใช้สตริงหรืออักขระแทน
Neil

2

สูตร IBM / Lotus Notes ขนาด 79 ไบต์

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

ไม่มี TIO สำหรับสูตรดังนั้น ...

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


2

Python 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)

ลองออนไลน์!

นี่เป็นคำตอบอื่น ๆ ที่ถูกตีอย่างแรง แต่ฉันลองเล่นกอล์ฟใน Python มากกว่านี้ คำแนะนำได้รับการชื่นชม!


1
คุณสามารถใช้พิมพ์เพื่อหลีกเลี่ยงการได้รับมอบหมายจากนั้นใช้แลมบ์ดาตั้งแต่มันขณะนี้เป็นเพียงคำสั่งหนึ่งแล้วร่นแบบอินไลน์ifงบเพื่อการจัดทำดัชนีรายการแทนแล้วร่นเงื่อนไขที่จะใช้inแล้วโยนมันออกทั้งหมดเพราะมันใกล้เกินไปที่จะคำตอบที่มีอยู่
Jo King

นักกอล์ฟสองคนที่ไม่เปลี่ยนวิธีการดั้งเดิมของคุณเพื่อลดให้เหลือ 87 ลองออนไลน์!
ElPedro

คุณสามารถแทนที่if x.count(",")ด้วยif~x.find(",")การบันทึกหนึ่งไบต์ str.findประเมิน-1ว่าหากไม่พบสตริง หากคุณเสริมสิ่งนี้ด้วยโอเปอเรเตอร์ unary ผลลัพธ์จะเกิดขึ้น0ถ้าหากไม่มีซับสตริง หรือคุณสามารถแทนที่ด้วยif","in x 4 ไบต์น้อยกว่า
Jitse






1

C # (Visual C # Interactive Compiler) , 72 ไบต์

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

บันทึก 2 ไบต์ขอบคุณ @someone

ลองออนไลน์!


SkipLast(1) -> Trim('?')สำหรับ - ไบต์เท่าที่ฉันเห็น (ความพยายามทั้งหมดของฉันในการคำนวณผลลัพธ์ที่แตกต่างในจำนวนที่แตกต่างกัน)
สรรพนามของฉันคือ monicareinstate

1

Python 2 , 66 63 62 ไบต์

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

ลองออนไลน์!

-3 หลังจากพบคำอธิบายที่ปรับปรุงแล้ว "อินพุตจะมีเพียงหนึ่งเท่านั้นและจะเป็นอักขระตัวสุดท้ายเสมอ"

-1 ด้วย @ChasBrown

โดยทั่วไปพอร์ตของฉันคำตอบ Lotus Notes อยากรู้อยากเห็นการชี้แจงระบุไว้ข้างต้นไม่ได้ช่วยให้คำตอบหมายเหตุเนื่องจาก@Endsเป็น 4 @Containsไบต์ราคาถูกกว่า ตอนนี้ถ้ามี@Inฟังก์ชั่นเท่านั้น ...




โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.