आपका सवाल क्या था?


19

परिचय

जब आपको एक उबाऊ पाठ दिया जाता है, तो आप इसे जल्द से जल्द प्राप्त करना चाहते हैं। आइए निम्नलिखित पाठ का अवलोकन करें:

Ens colligi timenda etc priorem judicem. De quascunque ii at contingere 
repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune 
obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima 
sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et 
ut quod id soli soni deus. At constare innumera is occurret ea. Nia calebat seu 
acquiro fraudem effingo dicimus.

नोट: इस पाठ में पठनीयता के लिए नई सुर्खियाँ हैं, जबकि जिन परीक्षण मामलों को आपको संभालने की आवश्यकता है, उनके पास नए वर्ण नहीं हैं।

पाठ को स्किम करने का एक तरीका यह है कि उन प्रश्नों को खोजा जाए जो लेखक ने पाठ में डाले हैं। उदाहरण के लिए, ऊपर दिए गए पाठ में 1 प्रश्न है। अर्थात्:

Adjuvetis hoc fortassis suspicari opportune obversari vix eam?

यह पाठ को वाक्यों में विभाजित करके किया जा सकता है। एक वाक्य हमेशा निम्नलिखित विराम चिह्नों में से एक के साथ समाप्त होगा : .?!(दूसरों को नियंत्रित करने की आवश्यकता नहीं है)। इनके अलावा अन्य प्रतीक वाक्य का हिस्सा हैं।


काम

केवल पाठ से मिलकर एक पंक्ति दी

  • पत्र (ए-ज़-ज़)
  • संख्या (0-9)
  • रिक्त स्थान
  • विराम चिह्न ( ,.;:?!) (एक वाक्य इनमें से किसी एक के साथ शुरू नहीं हो सकता)।

उन प्रश्नों को आउटपुट करें जो पाठ में किसी भी उचित प्रारूप में हैं। आप मान सकते हैं कि पाठ में हमेशा कम से कम 1 प्रश्न होगा । एक सवाल के पहले और बाद में आउटपुट ट्रेलिंग और प्रमुख स्थान।

महत्वपूर्ण : विराम चिह्न के आगे, एक और विराम चिह्न कभी नहीं होगा (जैसे ??अमान्य है और संभाल करने की आवश्यकता नहीं होगी)।


परीक्षण के मामलों

प्रारूप में:

Input
Output(s)

परीक्षण के मामले:

Huh? I haven't heard what you just said. Could you repeat that please?
Huh?
Could you repeat that please?

plz can i haz cheesburgr? i am cat pls.
plz can i haz cheesburgr?

This is a badly formatted question.Can u please help me,or my friends,with formatting this question    ?thankyou.
Can u please help me,or my friends,with formatting this question    ?

a.b.c.d?
d?

Does this question have a question mark? yes
Does this question have a question mark?

Why example.com resolves to 127.0.0.1 in 99.9 percent of cases?
9 percent of cases?

A? b? c? d!
A?
b?
c?

यह , इसलिए सबसे कम संख्या में बाइट्स जीतता है!


2
.?!दूसरों को नियंत्रित नहीं किया जाना चाहिए , जैसा कि आपके नियम निर्दिष्ट करते हैं, लेकिन आपने कहा है कि दूसरों को नियंत्रित करने की आवश्यकता नहीं है
एर्ग आउटफोलर

एक से अधिक प्रश्न के साथ कोई टेस्टकेस नहीं?
edc65

@ edc65 पहले परीक्षण मामले में 2 प्रश्न हैं, लेकिन मैं एक और परीक्षण मामला जोड़ूंगा।
अदनान

जवाबों:



5

पायथन, 46 बाइट्स

import re
f=lambda s:re.findall("[^!?.]*\?",s)

के साथ बुलाना:

f("your string here")

परीक्षणों पर आउटपुट:

['Can u please help me,or my friends,with formatting this question    ?', 'Can u please help me,or my friends,with formatting this question    ?', ' Huh?', ' Could you repeat that please?', ' plz can i haz cheesburgr?', 'd?', 'Does this question have a question mark?', '9 percent of cases?', 'A?', ' b?', ' c?']

एक और विचार, 77 बाइट्स (python3 में आपको फ़िल्टर के आसपास एक सूची की आवश्यकता होगी):

import re
f=lambda s:filter(lambda x:x[-1]=="?",re.split("(?<=[\.\?!]).",s)))

मैं ऐसा करने के लिए नया हूँ, इसलिए यह शायद बहुत कम हो सकता है।

-17 (!) मार्टिन को धन्यवाद बाइट्स

- ",", "?" या "" (शेल समाधान के करीब हो रही है, लेकिन मुझे संदेह है कि मैं और अधिक बचा सकता है)


1
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! बहुत अच्छा पहला जवाब :)।
अदनान

मुझे नहीं लगता है कि आपको उस खोज की आवश्यकता है और न ही आपको असहमति बनाने की आवश्यकता है [\w,:; ]*(क्योंकि वह समूह किसी भी तरह विराम चिह्न चरित्र से आगे नहीं बढ़ सकता है), और फिर आपको .अपने इनपुट के लिए प्रस्तुत करने की भी आवश्यकता नहीं है । आप शेष वर्ण वर्ग को छोटा कर देते हैं [^.!?]
मार्टिन एंडर

धन्यवाद, मार्टिन! मैंने इसके साथ थोड़ा सा प्रयास किया है, लेकिन स्पष्ट नहीं देखा।
कार्लक्स्टोर

4

जावास्क्रिप्ट, 35 24 बाइट्स

a=>a.match(/[^.?!]*\?/g)

सभी सब्सट्रिंग्स देता है जो एक ., ?या !(या पाठ की शुरुआत) के बाद शुरू होता है और एक में समाप्त होता है ?


Urgh। और मुझे लगा कि मैंने 40 बाइट्स के साथ अच्छा किया है। गुड जॉब ओपी और @ मर्टिनएंडर
मेयरमोनी जूल

3

वी , 12 बाइट्स

Í[^.!?]*[.!]

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

बहुत सीधा सा जवाब।

Í             "Remove every occurrence, on every line
 [^.!?]       "Of any character that isn't '.', '!', or '?'
       *      "Repeated any number of times
        [.!]  "Followed by a a '.' or a '!'

शुक्र है, नई कहानियों को संभालना, या सभी परीक्षण-मामलों की पुष्टि करना किसी भी बाइट को नहीं जोड़ता है।


3

28 बाइट्स, है ना? (16 यूटीएफ -8
चरस

6
@ bruce965 जेली एक कस्टम कोड पेज का उपयोग करता है जो प्रत्येक 256 बाइट्स को एक सिंगल बाइट के रूप में समझता है। बाइट्स यह करने के लिए शीर्ष लेख अंक में जोड़ देते हैं।
डेनिस

ओह बढ़िया! मैं अभी तक कोडग्राफर नहीं हूं, इसलिए मुझे इस ट्रिक्स के बारे में पता नहीं है, सवाल के लिए खेद है।
फैबियो इउती

4
@ bruce965 रिकॉर्ड के लिए, यह वास्तव में एक चाल नहीं है: भाषा आईएसओ 8859-1 (या कुछ अन्य मौजूदा एकल-बाइट एन्कोडिंग) का उपयोग कर सकती है और बस उतनी ही शक्तिशाली हो सकती है, लेकिन कस्टम कोड पृष्ठ का उपयोग करने से आप अधिक उपयोग कर सकते हैं यदि आप उदाहरण के लिए नियंत्रण वर्णों के साथ कोड करना चाहते हैं तो आसानी से टाइप करने योग्य वर्ण और बेहतर वर्णव्यवस्था। दिन के अंत में, यह केवल बाइट्स की एक धारा है, जहां हर बाइट को कुछ अर्थ सौंपा गया है।
मार्टिन एंडर

2
ठीक है, "चाल" एक बुरी धारणा के साथ लग सकता है, मुझे "स्ट्रेटेजम" या कुछ और कहना चाहिए था। मुझे "ट्रिक" से बेहतर कोई शब्द नहीं मिला।
फाबियो इओटी

3

शैल उपयोगिताओं, 43 38 बाइट्स

5 बाइट्स को ट्रिम करने के लिए rexkogitans का धन्यवाद !

tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"

इस तरह से पाइप इनपुट:

echo Huh? I haven't heard what you just said. Could you repeat that please?|tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"

अगर मायने रखता है, मैं उपयोग कर रहा हूँ:

  • जीएनयू tr5.3.0
  • जीएनयू sed4.2.1
  • माइक्रोसॉफ्ट का cmd.exe, विंडोज 5.1.2600 के साथ भेज दिया गया

  • 1
    मैंने पहले कभी भी कई उपयोगिताओं का उपयोग करके उत्तर प्रस्तुत नहीं किया है, इसलिए यदि मैं कुछ गलत कर रहा हूं, तो मुझे बताएं।
    जो

    क्या आप GNU उपयोगिता के विंडोज़ संस्करण, या विंडोज़ के लिए एक शेल का उपयोग करते हैं?
    8

    tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"5 बाइट्स बचाता है (दो जोड़े गए trऔर 7 बच गए sed- यह बैश में परीक्षण किया गया था)। /gआवश्यक नहीं है, क्योंकि यह लाइन द्वारा लाइन संसाधित है।
    8

    @ E @G GN, मैं GNU उपयोगिताओं के विंडोज पोर्ट का उपयोग कर रहा हूं।
    जो

    @rexkogitans, धन्यवाद! मैं भूल गया []; ऐसा करने का मेरा पहला प्रयास कुछ इस तरह का था \(\.|!\)
    जो

    2

    5.10 पर्ल, 21 18 बाइट (साथ -n झंडा)

    say m/[^?.!]+\?/g
    

    प्रश्न का सीधा कार्यान्वयन।

    यहाँ कोशिश करो!


    आप प्रमुख से छुटकारा मिल सकता है mअपने regex की, और फिर आप के बीच की जगह को दूर करने में सक्षम हो जाएगा sayऔर/
    दादा

    2

    रूबी 1.9, 17 बाइट्स

    $_=$F
    

    5 बाइट्स प्रोग्राम जिसे निम्न कमांड लाइन विकल्पों के साथ लागू किया जाना चाहिए:

    paF[^?]*[.!]
    

    मुझे नहीं पता था कि रूबी के झंडे को इस तरह से कुश्ती किया जा सकता है, +1! अजीब तरह का लगता है, हालांकि, चूंकि लगातार सवाल उस सरणी के भीतर एक स्ट्रिंग के रूप में एक साथ होंगे, जबकि अन्य प्रश्न अलग-अलग, सही हैं? जब तक वहाँ एक रूबी 1.9 quirk मैं के बारे में पता नहीं कर रहा हूँ।
    मूल्य स्याही

    @ValueInk सरणी की सामग्री को संक्षिप्त किया जाएगा ताकि कार्यक्रम एक एकल स्ट्रिंग का आउटपुट दे, न कि एक सरणी शाब्दिक। आप इसे golf.shinh.org/check.rb पर आज़मा सकते हैं, जिसमें माणिक 1.9 है। झंडे को शबंग में स्थापित किया जा सकता है।
    xsot

    अहा, यह बताता है कि आपको 2.0 के बाद से 1.9 की आवश्यकता क्यों है और वास्तविक सरणी की तरह दिखने के लिए इसका उत्पादन होता है।
    मूल्य इंक

    1

    बैच, 174 बाइट्स

    @echo off
    set/ps=
    set t=
    :l
    set c=%s:~0,1%
    set t=%t%%c%
    if "%c%"=="?" echo %t%&set t=
    if "%c%"=="!" set t=
    if "%c%"=="." set t=
    set s=%s~1%
    if not "%s%"=="" goto l
    

    STDIN से एक लाइन पढ़ना उपयोग करने की तुलना में एक बाइट है set s=%*


    1

    PowerShell v4 +, 43 बाइट्स

    ([regex]::Matches($args,'[^?!.]*\?')).Value
    

    वास्तव में सीधा है। इनपुट लेता है $argsऔर खिलाता है कि एक .NET [regex]::Matches(...)स्थिर फ़ंक्शन के पहले पैरामीटर के रूप में । रेगेक्स जो हम मेल कर रहे हैं वह है [^?!.]*\?- वह है, किसी भी संख्या में गैर-वाक्य-समाप्त होने वाले वर्ण जो एक प्रश्न चिह्न के बाद हैं। स्थैतिक फ़ंक्शन ऑब्जेक्ट्स की एक सरणी देता है जो यह दर्शाता है कि कैप्चर ग्रुप, इंडेक्स इत्यादि क्या हैं, लेकिन हम केवल एस चाहते हैं .Value, इसलिए रिटर्न पार्न्स में एनकैप्सुलेटेड है और हम उस प्रॉपर्टी को कॉल करते हैं। यह वह जगह है जहाँ v4 + आवश्यकता खेल में आती है, क्योंकि पूर्व संस्करणों में आपको लूप की तरह कुछ करने |%{$_.Value}या |Select Valueउपयुक्त गुण प्राप्त करने की आवश्यकता होगी ।

    उदाहरण के बिना parens और .Value

    PS C:\Tools\Scripts\golfing> .\what-exactly-was-your-question.ps1 "Huh? I haven't heard what you just said! Could you repeat that please?"
    
    Groups   : {Huh?}
    Success  : True
    Captures : {Huh?}
    Index    : 0
    Length   : 4
    Value    : Huh?
    
    Groups   : { Could you repeat that please?}
    Success  : True
    Captures : { Could you repeat that please?}
    Index    : 40
    Length   : 30
    Value    :  Could you repeat that please?
    

    उदाहरण के साथ परेंस और .Value

    PS C:\Tools\Scripts\golfing> .\what-exactly-was-your-question.ps1 "Huh? I haven't heard what you just said! Could you repeat that please?"
    Huh?
     Could you repeat that please?
    

    1

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

    def f(x,a=0):
     for n in range(len(x)):
      if x[n]in".!":a=n+1
      if x[n]is"?":print(x[a:n+1])
    

    अजगर 2 में 1 बाइट बचाता है:

    def f(x,a=0):
     for n in range(len(x)):
      if x[n]in".!":a=n+1
      if x[n]is"?":print x[a:n+1]
    
    हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
    Licensed under cc by-sa 3.0 with attribution required.