सोमवार मिनी-गोल्फ # 5: <s> घर पर ऐसा न करें


24

सोमवार मिनी-गोल्फ: लघु प्रश्नों की एक श्रृंखला , प्रत्येक सोमवार को पोस्ट (उम्मीद है!)।

कभी-कभी लोग जीवन के नियमों से थक जाते हैं: "यह मत करो", "आप ऐसा नहीं कर सकते", "हम आपको ऐसा नहीं करने देंगे"। यह कई बार वास्तव में प्रतिबंधित लग सकता है! लेकिन हर अब और फिर, थोड़ा मज़ा करना अच्छा है, तो आइए इन नियमों को संशोधित करने के लिए कुछ कोड लिखें। और जब हम इस पर होते हैं, तो अन्य नकारात्मकता को भी संशोधित कर सकते हैं। (बेशक, ये संशोधन केवल अस्थायी नहीं होंगे, इसलिए हम मूल शब्द भी छोड़ देंगे।)

चुनौती

आपकी चुनौती एक प्रोग्राम या फ़ंक्शन लिखना है जो HTML <s>स्ट्राइकथ्रू</s> को प्रतिबंधात्मक शब्दों के चारों ओर रखता है - यानी, इनमें से प्रत्येक के बाद n'tया उसके बाद समाप्त होने वाले शब्द, notसभी CAPS में इसके सकारात्मक समकक्ष को सम्मिलित करता है। अंत में, एक स्थान के बाद, किए गए प्रतिस्थापन की संख्या को शामिल किया जाना चाहिए। उदाहरण के लिए:

Please don't jump into the pool.

हो जाता है

Please <s>don't</s> DO jump into the pool. 1

( n'tया notसाथ ही cannot) समाप्त होने वाले या उसके बाद के शब्दों के लिए , सकारात्मक समतुल्य सब कुछ पूर्वोक्त not(रिक्त स्थान को छोड़कर) है। यहाँ मेरा मतलब है:

  • do not speak हो जाता है <s>do not</s> DO speak
  • it doesn't work हो जाता है it <s>doesn't</s> DOES work
  • we cannot हो जाता है we <s>cannot</s> CAN

हालांकि, कुछ अपवाद हैं। सुनिश्चित करें कि ये ठीक से संभाले हुए हैं।

can't -> <s>can't</s> CAN
won't -> <s>won't</s> WILL
ain't -> <s>ain't</s> AM
shan't -> <s>shan't</s> SHALL
I'm not -> <s>I'm not</s> I AM
you're not -> <s>you're not</s> YOU ARE

विवरण

  • इनपुट में सामान्य रिक्त स्थान (कोई टैब, न्यूलाइन्स आदि) को छोड़कर कोई भी व्हाट्सएप नहीं होगा।
  • इनपुट में कभी भी कोई भी दोहरी नकारात्मक (उदा we can't not do this) नहीं होगी।
  • यदि notविराम चिह्न के तुरंत बाद, या किसी अन्य शब्द के भाग के रूप में प्रकट होता है, तो इसे छोड़ दें।
  • <s></s>टैग के बीच ऊपरी / निचले हिस्से सहित मूल पाठ को संरक्षित करना सुनिश्चित करें ।
  • यदि आप चाहें, तो आप के <strike></strike>स्थान पर उपयोग कर सकते हैं <s></s>

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

इनपुट:

I'm sorry, but you can't do that.
Driving on the beach isn't allowed.
Driving on the beach is not allowed.
Please don't jump in; I cannot imagine what might come of that.
Don't worry; we won't get into trouble.
I'm not perfect, but you're not either.
You shan't do it 'cause I ain't doin' it!
Can't we capitalize special cases?
I don't like the words can't, shan't, won't, don't, ain't, or ppcgn't.
Oh, this? It's nothing.
Tie a slipknot in the rope.
Would you like Pinot Noir?
This sentence contains none of the replacement words. Not even knot or ca't.
This sentence doesn't contain one of the replacement words.

आउटपुट:

I'm sorry, but you <s>can't</s> CAN do that. 1
Driving on the beach <s>isn't</s> IS allowed. 1
Driving on the beach <s>is not</s> IS allowed. 1
Please <s>don't</s> DO jump in; I <s>cannot</s> CAN imagine what might come of that. 2
<s>Don't</s> DO worry; we <s>won't</s> WILL get into trouble. 2
<s>I'm not</s> I AM perfect, but <s>you're not</s> YOU ARE either. 2
You <s>shan't</s> SHALL do it 'cause I <s>ain't</s> AM doin' it! 2
<s>Can't</s> CAN we capitalize special cases? 1
I <s>don't</s> DO like the words <s>can't</s> CAN, <s>shan't</s> SHALL, <s>won't</s> WILL, <s>don't</s> DO, <s>ain't</s> AM, or <s>ppcgn't</s> PPCG. 7
Oh, this? It's nothing. 0
Tie a slipknot in the rope. 0
Would you like Pinot Noir? 0
This sentence contains none of the replacement words. Not even knot or ca't. 0
This sentence <s>doesn't</s> DOES contain one of the replacement words. 1

स्कोरिंग

यह , इसलिए बाइट्स जीत में सबसे कम वैध कोड है। टाईब्रेकर प्रस्तुत करने के लिए जाता है जो पहले अपने अंतिम बाइट की गिनती तक पहुंच गया। विजेता नहीं होंगे अगले सोमवार चुना जाएगा, अक्टूबर 26. गुड लक!


@FryAmTheEggman हां, जब तक कि कुछ अन्य सूची में जोड़ने लायक नहीं हैं। मैं इसे कम रखना चाहूंगा, लेकिन क्या आपके पास कोई सुझाव है?
ETHproductions

नहीं, बस यह नहीं चाहता था कि आप "अब कल्पना बदल जाती है" चुनौती सिंड्रोम: पी
FryAmTheEggman

1
सुझाया गया परीक्षण का मामला:Can't we capitalize special cases?

क्या हमें तार के साथ सावधान रहने की आवश्यकता है: Oh this? It's nothing...या I wonder if we'll notice any words like this??
डोम हेस्टिंग्स 11

2
वन <स्ट्राइक> नहीं करता है </ हड़ताल> मेमों को केवल कंटेस्टेंट में परिवर्तित करता है!
Jan

जवाबों:


7

पिप , 138 140 बाइट्स

येश, वह cannot/ knotभेद मुश्किल है।

x:"ca wo ai sha i'm you're"^sY"CAN0WILL0AM0SHALL0I AM0YOU ARE"^0OqR-`([\w']+)( no|n'|(?<=can)no)t\b`{++i"<s>".a."</s>".s.((yx@?LCb)|UCb)}s.i

स्टड से एक लाइन पढ़ता है, स्टडआउट के लिए आउटपुट। रेगेक्स:

`([\w']+)( no|n'|(?<=can)no)t\b`

एक शब्द (एपोस्ट्रोफ सहित) से मेल खाता है, उसके बाद तीन चीजों में से एक:

  • not
  • n't
  • not अंतरिक्ष के बिना, शब्द का पहला आधा हिस्सा प्रदान किया गया था can

-एक regex पर ऑपरेटर यह केस-संवेदी बना देता है।

निम्नलिखित फ़ंक्शन के परिणाम के साथ मिलानों को बदल दिया जाता है। (नोट: फ़ंक्शन के भीतर, aपूरा मैच है और bग्रुप 1 पर कब्जा कर रहा है)

{++i"<s>".a."</s>".s.((yx@?LCb)|UCb)}
 ++i                                   Increment counter
    "<s>".a."</s>"                     Return entire match wrapped in HTML tags...
                  .s.(             )   plus space, plus the following:
                           LCb         Lowercase first capture group
                        x@?            Find its index in list x of special cases (nil if
                                         not in list)
                      (y      )        Use that as index into list y of replacements
                               |UCb    If it wasn't a special case, this is nil, and we
                                         instead use uppercase(b)

एक बार संशोधित स्ट्रिंग हो जाने के बाद, हम एक स्पेस और रिप्लेसमेंट की संख्या को भी आउटपुट करते हैं i


3

जीएनयू सैड, 321 बाइट्स

(+1 के लिए सहित -r)

:
s!(can('|no)t)([^<])!<s>\1</s> CAN\3!i
s!(won't)([^<])!<s>\1</s> WILL\2!i
s!(ain't)([^<])!<s>\1</s> AM\2!i
s!(shan't)([^<])!<s>\1</s> SHALL\2!i
s!(I'm not)([^<])!<s>\1</s> I AM\2!i
s!(you're not)([^<])!<s>\1</s> YOU ARE\2!i
t
s!(([^ .!?]+)(n't| not))([^<])!<s>\1</s> \U\2\4!i
t
h
s/1//g
s/<s>/1/g
s/[^1]//g
x
G
s/\n/ /

"स्ट्रिंग प्रतिस्थापन - sed के लिए एक नौकरी!" मैंने सोचा। लेकिन यह आश्चर्यजनक रूप से कठिन था, और मैं मूल पाठ के प्रतिस्थापन के साथ घुसपैठ करता रहा। और गिनती! कम से कम सवाल में एकता पर कोई प्रतिबंध नहीं है ...


2

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

150 स्क्रिप्ट + 3 के लिए -p

$c=0|s!\b((ca)nnot|([\w']+)(?: not|n't))\b!"<s>$&</s> ".uc({ai,AM,ca,CAN,wo,WILL,sha,SHALL,"i'm","I AM","you're","YOU ARE"}->{lc$+}||$+)!egi;s/
/ $c
/

इसलिए जब तक मैं सभी परीक्षण मामलों से मेल खाता हूं, लेकिन उस रेगेक्स ने मुझे महंगा कर दिया है ... मैं इस पर सोचूंगा!

उदाहरण आउटपुट:

$perl -p can.pl <<< "I'm sorry, but you can't do that.
Driving on the beach isn't allowed.
Driving on the beach is not allowed.
Please don't jump in; I cannot imagine what might come of that.
Don't worry; we won't get into trouble.
I'm not perfect, but you're not either.
You shan't do it 'cause I ain't doin' it!
Can't we capitalize special cases?
I don't like the words can't, shan't, won't, don't, ain't, or ppcgn't.
Oh, this? It's nothing.
This sentence contains none of the replacement words. Not even knot or ca't.
This sentence doesn't contain one of the replacement words.
Tie a slipknot in the rope.
Would you like Pinot Noir?
You cannot be serious\!"
I'm sorry, but you <s>can't</s> CAN do that. 1
Driving on the beach <s>isn't</s> IS allowed. 1
Driving on the beach <s>is not</s> IS allowed. 1
Please <s>don't</s> DO jump in; I <s>cannot</s> CAN imagine what might come of that. 2
<s>Don't</s> DO worry; we <s>won't</s> WILL get into trouble. 2
<s>I'm not</s> I AM perfect, but <s>you're not</s> YOU ARE either. 2
You <s>shan't</s> SHALL do it 'cause I <s>ain't</s> AM doin' it! 2
<s>Can't</s> CAN we capitalize special cases? 1
I <s>don't</s> DO like the words <s>can't</s> CAN, <s>shan't</s> SHALL, <s>won't</s> WILL, <s>don't</s> DO, <s>ain't</s> AM, or <s>ppcgn't</s> PPCG. 7
Oh, this? It's nothing. 0
This sentence contains none of the replacement words. Not even knot or ca't. 0
This sentence <s>doesn't</s> DOES contain one of the replacement words. 1
Tie a slipknot in the rope. 0
Would you like Pinot Noir? 0
You <s>cannot</s> CAN be serious\! 1

वाह, यह कॉम्पैक्ट है! एक मुद्दा: I'm notठीक से काम नहीं कर रहा है - यह होना चाहिए I AMबजाय I'M। लेकिन मैं आपको सिर्फ परिवर्तन करने की जरूरत है लगता है I'mके लिए i'mइसे ठीक करने के कोड में।
DLosc

ओह - भी, ऐसा वाक्य पर की कोशिश Tie a slipknot in the rope.या Would you like Pinot Noir?। वे अभी तक परीक्षण मामलों में नहीं हैं, लेकिन ओपी का इरादा notसिवाय किसी भी शब्द को समाप्त करने के था cannot
DLosc

@DLosc उत्कृष्ट परीक्षण के मामले! मैं किसी भी लंबे शब्दों को समाप्त करने के बारे में नहीं सोच सकता था not! I'mएक बुरी याद आती थी, स्थान के लिए धन्यवाद!
डोम हेस्टिंग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.