और सभी लोगों ने कहा…


14

उद्देश्य पाठ के एक इनपुट को देखते हुए जिसमें वर्ण शामिल नहीं हैं [या ], निम्नलिखित क्रियाएं करते हैं:

  1. Amenकम से कम एक कैपिटल लेटर के साथ हर उदाहरण के लिए (इसलिए सभी उदाहरणों को Amenछोड़कर amen), आउटपुट उसी Amen(कैपिटलाइज़ेशन को बनाए रखें)।
  2. के हर उदाहरण के लिए /all the people said[?: ]/i(वह एक नियमित अभिव्यक्ति है), आउटपुट भी Amen(कोई भी मामला ठीक है।)

हर आउटपुट के बाद, आप किसी भी निरंतर विभाजक को चुन सकते हैं , उदाहरण के लिए एक नई रेखा, स्थान, या कुछ भी नहीं।

यह एक , इसलिए बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।

उदाहरण IOs

Input: I said AMEN! AMEN, PEOPLE!
Output: AMENAMEN         ; any separator is fine, I choose none.

Input: amen amen amen amen
Output:                  ; nothing

Input:                   ; empty
Output:                  ; nothing

Input: *blah blah blah* And all the people said?
Output: Amen

Input: all the people said:
Output: Amen

Input: AMEN AMeN AmeN aMEN amen AmEn
Output: AMEN AMeN AmeN aMEN AmEn

Input: All the people said Amen! And all the people said AMEN!
Output: Amen Amen Amen AMEN

Input: LAMEN! Amen.
Output: AMEN Amen

Input: AmenAmenAmenAmenAMENamen
Output: Amen Amen Amen Amen AMEN

Input: And he was like, "Amen", then we were all like, "Amen, bruh."
Output: Amen Amen

Input: And all the aMen people said.
Output: aMen

बक्शीश

  • -20 बाइट्स यदि आप "हड़पने" विराम चिह्न कर सकते हैं कि इस प्रकार Amen, यानी, Amen! => Amen!, AmEN. => AmEN., I said Amen, bruh. => Amen,, और AMEN!!!! => AMEN!!!!!कई बार संरक्षित किया जाने वाला एकमात्र पात्र है। .?!,इस प्रकार संरक्षित किए जाने वाले एकमात्र पात्र हैं।
  • -40 बाइट्स अगर, कुछ नहीं के बजाय amen, आउटपुट का एक उदाहरण है , तो आपत्तिजनक शब्द का सूचकांक Heresy! at index [i]कहां [i]है amen

बोनस IOs

इनपुट और आउटपुट फॉर्म का है input => output। (यहाँ विभाजक एक स्थान है।)

BONUS 1
Can I get an Amen! => Amen!
AMEN! and AMEN! and a final Amen... => AMEN! AMEN! Amen.
Amen? Amen, and amEn! => Amen? Amen, amEn!

BONUS 2
The man sighed and said, "amen," and left. It's AMEN! => Heresy! at index [26] AMEN!

लीडरबोर्ड

यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

# Language Name, N bytes

Nआपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

# Ruby, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक स्कोर अंतिम संख्या है:

# Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो लीडरबोर्ड स्निपेट में दिखाई देगा:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


क्या amenक्रम में होना है?
Zach गेट्स

@ZachGates हां।
कॉनर ओ'ब्रायन

आप "अपमानजनक वाक्यांश का सूचकांक" कैसे निर्धारित करते हैं?
ज़च गेट्स

@ZachGates के सूचकांक होना करने के लिए aमें amen। जैसे, G amen => 2यदि आपकी भाषा शून्य-अनुक्रमित है; 3 अगर यह एक-अनुक्रमित है।
कॉनर ओ'ब्रायन

AMEN!!!! => AMEN!!!!और अभी तक and a final Amen... => Amen.?
ThisSuitIsBlackNot 20

जवाबों:


11

रेटिना , 37 बाइट्स

S`amen
i`all the people said[?: ]
amenx
!i`amen([.,?]|!*)

यदि कोड 57 बाइट लंबा है और -20 बाइट्स बोनस के लिए योग्य है । इसे ऑनलाइन आज़माएं!

रेटिना के लिए मेरे पर्ल जवाब को पोर्ट करने के लिए @ मार्टिनबटनर को धन्यवाद !

यह काम किस प्रकार करता है

S`                          Split the input at...
  amen                      matches of "amen".
i`                          Case-insensitively search for
  all the people said[?: ]  matches of "all the people said",
                            followed by '?', ':' or ' '...
    amenx                   and replace them with "amenx"
!i`                         Print all case-insensitive matches of...
  amen([.,?]|!*)            "amen", followed either by a single '.',
                            ',' or '?', or by 0 or more '!'s.

1
क्या मुझे ([.,?]|!*)अपने उत्तर के लिए आपके विराम चिह्न मिलान पैटर्न का उपयोग करना चाहिए ? मैंने इसे देखा और इसे अनसेज़ नहीं किया (और मैं निश्चित रूप से एक बेहतर समाधान नहीं खोज सका!)। यह निश्चित रूप से आपको हरा देने वाला नहीं है :), लेकिन मैं इसे कम नहीं करना चाहता, और इस तरह की उप-समस्याओं के समाधान के लिए मैं शिष्टाचार के बारे में पूरी तरह सुनिश्चित नहीं हूं।
अप्सिलर्स

3
@apsillers कानूनी रूप से, यहां सभी सामग्री CC-BY-SA के रूप में लाइसेंस प्राप्त है, जिसका अर्थ है कि आप इसे स्वतंत्र रूप से उपयोग कर सकते हैं। नैतिक रूप से, किसी को किसी अन्य भाषा के समाधान के लिए उसे आउटगोल्फ के लिए अधिक या कम से कम पर आधारित है, लेकिन किसी के जवाब का एक छोटा सा हिस्सा लेना हमेशा ठीक होता है।
डेनिस

7

VBA, 193 बाइट्स

Function v(b)
For i=1 To Len(b)
If StrConv(Mid(b,i,19),2) Like "all the people said" Then v=v& "Amen"
q=Mid(b,i,4):k="amen"
If StrConv(q,2) Like k And Not q Like k Then v=v& q
Next
End Function

नो सेपरेशन, नो रेगेक्स, नो बोनस। एक ऐसा संस्करण था जो दोनों बोनस प्राप्त करता था लेकिन अब बहुत लंबा था।


आप वैन बाइट को 1 बाइट हारकर बदल for i=1 toजाते हैंfor i=1To
टेलर स्कॉट

5

पर्ल, 51 बाइट्स

s/amen/x/g;s/all the people said[?: ]/amenx/ig;say/amen[.,?]|amen!*/ig

वास्तविक स्रोत कोड में 70 बाइट्स हैं , इसे perl -nE( +1 बाइट ) के साथ चलाया जाना चाहिए , और यह -20 बाइट्स बोनस के लिए योग्य है ।


4

पायथन 2, 155 बाइट्स

from re import*
F,m=findall,"((?i)amen)"
for i in split(m,input()):
 if F("((?i)all the people said[?: ])",i):print'AMen'
 elif F(m,i)and i!="amen":print i

उदाहरण

$ python2 test.py
"All the people said Amen! And all the people said AMEN!"
AMen
Amen
AMen
AMEN

3

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

108 बाइट्स - 20 बाइट्स (कैच विराम चिह्न)

alert(prompt().replace(/amen/g,' ').replace(/all the people said[?: ]/ig,'Amen').match(/amen(\??!?\.?)+/ig))

यह Amen?!.इनपुट के लिए प्रिंट करता है Amen?!., और Amen!इनपुट के लिए Amen!!!
डेनिस

@ डेनिस क्षमा करें, एक बार में उपयोग किए जा रहे कई विराम चिह्नों के बारे में नहीं सोचा था, मैं इसे ठीक कर दूँगा।
टोबस्टा

@ डेनिस ने इसे ठीक किया।
टोबस्टा 5

@apsillers ने यह भी ध्यान नहीं दिया। मैं बाद में इसे ठीक करने की कोशिश करूंगा।
तोबस्टा नोवा

@apsillers फिक्स्ड
टोबस्टा

3

grep और sed, 85 83 84 77 - 20 = 57 बाइट्स

sed 's/all the people said[?: ]/Amenx/ig'|grep -oi 'amen[.,!?]*'|grep \[AMEN]

1
यह Amen?इनपुट के लिए प्रिंट करेगा all the people said??। सबसे अच्छा वर्कअराउंड मैं स्ट्रिंग को बदलने के लिए मिल सकता था Amenx
डेनिस

धन्यवाद @ डेनिस, मैंने आपके वर्कअराउंड का उपयोग किया है और स्कोर को अपडेट किया है।
थोर

1
यह amen.इनपुट के लिए प्रिंट करेगा amen.। इसे ठीक करने से आपका उत्तर छोटा हो जाएगा: बस इसमें बदलाव grep -v '^[amen]*$'करें grep \[AMEN]
hvd

@hvd: आप सही कह रहे हैं, यह बहुत बेहतर है :-)
थोर

3

पर्ल, 103 - 60 = 43 बाइट्स

#!perl -p
s/amen/Heresy! at index [@-]/g;s/all the people said[?: ]/Amen /gi;s/(amen([.,?]|!*)|h[^h]+\])\K|.//gi

शेबबैंग को एक के रूप में गिना जाता है, इनपुट स्टड से लिया जाता है। -20 बाइट्स के लिए विराम चिह्न बनाए रखता है , और -40 के लिए विधर्म की पहचान करता है ।


नमूना उपयोग

$ echo amen amen, and all the people said?? amen amen | perl amen.pl
Heresy! at index [0]Heresy! at index [5]AmenHeresy! at index [37]Heresy! at index [42]

$ echo AMEN AMeN AmeN aMEN amen AmEn | perl amen.pl
AMENAMeNAmeNaMENHeresy! at index [20]AmEn

$ echo The man sighed and said, "amen," and left. It's AMEN! | perl amen.pl
Heresy! at index [26]AMEN!

पर्ल, 70 - 20 = 50 बाइट्स

#!perl -p
s/all the people said[?: ]/Amen /gi;s/amen|(?i:amen([.,?]|!*))\K|.//g

शेबबैंग को एक के रूप में गिना जाता है, इनपुट स्टड से लिया जाता है। -20 बाइट्स के लिए विराम चिह्न बनाए रखता है ।


नमूना उपयोग

$ echo All the people said Amen, and all the people said AMEN!! | perl primo-amen.pl
AmenAmen,AmenAMEN!!

जैसे इनपुट के लिए आपका पहला समाधान विफल रहता है ha]। (कोई बात नहीं, बस ओपी की टिप्पणी को देखा कि इनपुट में चौकोर कोष्ठक नहीं हो सकते हैं ... इस प्रश्न को कई बार ट्रैक किया जा सकता है।)
ThisSuitIsBlackNot

@ThisSuitIsBlackNot मुझे नहीं लगता कि ओपी ने उस सवाल का जवाब दिया है।
डेनिस

@ डेनिस आह, आप सही कह रहे हैं। फिर भी एक और अज्ञात।
ThisSuitIsBlackNot

3

20, 66 - 20 = 46 चार्ट / 80 - 20 = 60 बाइट्स

ïċ/all the people said[?: ]⍀,`Amen”ċ(/amen⌿,`x”ĉ/amen(\??!?\.?)+⍀)

इसे यहाँ आज़माएँ - फ़ायरफ़ॉक्स केवल।

पहली बार यहां पीपीसीजीएसई में। आशा है कि यह गोल्फ बहुत अच्छा है।

संपादित करें: वास्तव में, मैं CJam (चार गिनती में) को हरा रहा हूं, इसलिए यह बहुत अच्छा है!


1
हाँ, किसी ने मेरी भाषा का उपयोग किया है! आपकी पहली पोस्ट के लिए बुरा नहीं है।
मामा फन रोल

2

सीजेएम, 57 बाइट्स

 q_,,\f{\:I>_4<_el"amen":A=*_A="Heresy! at index ["I+']+@?oK<)"?: "&,*el"all the people said"=A*o}

कोड 97 बाइट्स लंबा है और -40 बाइट्स बोनस के लिए योग्य है ।

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।


1
सीजेएम पर्ल से लंबा है? o_O
कॉनर ओ'ब्रायन

सीजेएम में नियमित अभिव्यक्ति नहीं है, इसलिए यह बिल्कुल आश्चर्य की बात नहीं है।
डेनिस

ओह ... लिखते हैं कि नीचे
कॉनर ओ'ब्रायन

2

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

alert(prompt().replace(/all the people said[?: ]/ig,'Amen').replace(/amen/g,'x').match(/amen/ig));

3
आप उपयोग कर सकते हैं x=prompt();और आप भी उपयोग कर सकते हैंalert(prompt().replace(...).replace(...).match)
कॉनर ओ'ब्रायन

किया हुआ। अब यह 100 वर्ण लंबा है।
नॉटिलस

2

जावास्क्रिप्ट, 136 135 - 40 - 20 = 75 बाइट्स

alert(prompt(A="ameN").replace(/all the people said[?: ]|(amen)([.,?]|!*)|./ig,(v,a,p,i)=>a?a>A?`Heresy! at index [${i}]`:v:v[1]?A:""))

स्पष्टीकरण:

यह कोड तीन-भाग regex द्वारा संचालित होता है जो replaceकॉलबैक में परिणाम देता है । भागों हैं:

  • all the people said[?: ]- बस आवश्यक all the people saidपैटर्न से मेल खाता है
  • (amen)([.,?]|!*)- किसी भी मामले amenऔर विराम चिह्न (एक .,?या शून्य या अधिक में से एक से मेल खाता है !, जो विराम चिह्नों को वैकल्पिक बनाता है) अलग-अलग मैच समूहों में - विराम चिह्न के लिए डेनिस को श्रेय
  • . - किसी भी अन्य चरित्र से मेल खाता है, उपरोक्त पैटर्न का हिस्सा नहीं, एक समय में

इसलिए, किसी भी मैच में या तो ऑल-द-पीप स्ट्रिंग होना चाहिए, वैकल्पिक विराम चिह्न के साथ आमीन मैच या उन वाक्यांशों में से किसी एक का एक भी हिस्सा नहीं होना चाहिए। हम स्ट्रिंगर के उपयुक्त भागों को बचाने और बदलने के लिए प्रतिकृति कॉलबैक में तर्क का उपयोग करते हैं, और हर दूसरे वर्ण को रिक्त स्ट्रिंग में बदलते हैं।

alert(
  // store "ameN" in `A` and then prompt
  prompt(A="ameN")
    .replace(
      // three-part regex:
      /all the people said[?: ]|(amen)([.,?]|!*)|./ig,

      // replacer callback, with arguments
      //   v - total match
      //   a - "amen" match group
      //   p - punctuation match group (unused)
      //   i - index of match
     (v,a,p,i)=>
        a?           // if there is an Amen match
          a>A?      //   if the Amen is lowercase (lexically more than "ameN")
               `Heresy! at index [${i}]`
              :v     //   otherwise, output full Amen with punctuation
         :v[1]?      // if there is no Amen, but more than one character
          A          //   this must be all-the-people; output "ameN"
         :""         // otherwise, not an Amen or all-the-people
  )
)

1

पायथन 2, 191 - 40 = 151 बाइट्स

i=input()
a='amen'
for j in range(len(i)):
 s=i[j:j+20];w=s[:4]
 if s[:-1].lower()=="all the people said"and s[-1]in'?: ':print a
 if w.lower()==a:print'Heresy! at index[%d]'%j if w==a else w

कोई रेगेक्स, और बोनस 2

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