सैल्यूटेशन निकालें


11

चुनौती

नमस्ते, इनपुट के रूप में एक स्ट्रिंग दी गई है, स्ट्रिंग की शुरुआत में पाए जाने वाले किसी भी सलाम को हटा दें

जो कार्यक्रम 50 बाइट्स जीत के तहत सबसे सही प्रतिस्थापन करता है।

अभिवादन

अरे, नमस्कार को निम्नलिखित शब्दों में से एक के रूप में परिभाषित किया गया है:

  • नमस्ते
  • हे
  • हैलो
  • प्रिय
  • अभिवादन
  • hai
  • लोग
  • hii
  • कैसे हो
  • हिया
  • सूखी घास
  • heya
  • hola
  • hihi
  • अभिवादन

पहले अक्षर को पूंजीकृत किया जा सकता है।

नमस्कार के बाद हमेशा एक अल्पविराम और / या एक ही स्थान होगा जिसे भी हटाया जाना चाहिए। अल्पविराम और स्थान किसी भी क्रम ( ,<space>या <space>,) में हो सकता है और दोनों को हटा दिया जाना चाहिए।

अभिवादन और निम्नलिखित शब्द केवल एक अल्पविराम और / या एकल स्थान द्वारा अलग किया जाएगा।

आपको उस शब्द के पहले अक्षर को कैपिटलाइज़ करना होगा, जिसने प्रणाम का पालन किया होगा। यहां तक ​​कि अगर कोई प्रतिस्थापन नहीं हुआ है, तो भी आपको आउटपुट के पहले शब्द को कैपिटल में बदलना चाहिए।

कैपिटलाइज़ेशन केवल वर्णमाला वर्णों को कम करने के लिए लागू होता है ( abcdefghijklmnopqrstuvwxyz)। आपको किसी अन्य चरित्र को छोड़ देना चाहिए जैसा वह था।

सलाम हमेशा स्ट्रिंग की शुरुआत में होगा। आप एक अभिवादन जो जगह नहीं होनी चाहिए नहीं शुरू में।

हमेशा सलाम नहीं हो सकता है।

आपका कोड 50 बाइट्स से कम होना चाहिए।

उदाहरण

Input > Output

Salutations, what's going on? > What's going on?
hello i have quetions how does juice an avocado > I have quetions how does juice an avocado
How d'you do > How d'you do
Hey,You! > You!
hola cows eat hay > Cows eat hay
hey Hi there! > Hi there!
hihi ,guys > Guys

टेस्ट बैटरी

होला, कुल 1000 अलग-अलग इनपुट हैं:

उपरोक्त दोनों को पुनः प्राप्त करने के लिए एक बैश कमांड है

wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt

जीतना

हॉवी, 1000 इनपुट से सबसे सही प्रतिस्थापन के साथ कार्यक्रम जीत के ऊपर।

आपके प्रोग्रामर के इनपुट के प्रतिशत को आपको अपने हेडर में सही ढंग से रखना चाहिए जैसे:

# Language Name, percentage%

मुझे पूरी तरह से यकीन नहीं है कि जेफ ने यह क्यों बनाया, लेकिन फिर भी यह एक अच्छी चुनौती है।


3
s=>System.Text.RegularExpressions.Regex.Replace();50 बाइट्स से पहले भी एक पैटर्न निर्दिष्ट किया गया है, वह C # आउट है। (पाठ्यक्रम के एक रेगेक्स दृष्टिकोण के साथ)
TheLethalCoder

1
पायथन भी बाहर है (रेगेक्स के साथ) :(
गैबोर फेकेट

आप हमेशा दिए गए इनपुट को 31.3% के स्कोर के लिए लौटा सकते हैं।
इयान मिलर

बढ़ती चुनौती की शुरुआत में नमस्कार को संपादित करने का आग्रह करें। ;)
Draco18s अब

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

जवाबों:


8

GNU sed, 78% 100%

/^\w*[wd]\b/!s/^[dghs][eruaio]\w*\W\+//i
s/./\U&/

(49 बाइट्स)

परीक्षण बैटरी काफी सीमित है: हम गिन सकते हैं कि प्रत्येक पंक्ति में कौन से शब्द पहले दिखाई देते हैं:

$ sed -e 's/[ ,].*//' inputs.txt | sort | uniq -ic
 40 aight
 33 alright
 33 dear
 33 g'd
 41 good
 36 greetings
 35 guys
 31 hai
 33 hay
 27 hello
 33 hey
 37 heya
 43 hi
 34 hihi
 29 hii
 35 hiya
 45 hola
 79 how
 37 howdy
 33 kowabunga
 39 salutations
 32 speak
 34 sweet
 40 talk
 36 wassup
 34 what's
 38 yo

अभिवादन हटा दिया जाना चाहिए के साथ शुरू d, g, hया s(या संस्करणों अपरकेस क्या है); उन पत्रों के साथ शुरू होने वाले गैर-सलाम हैं

 33 g'd
 41 good
 79 how
 32 speak
 34 sweet

लाइनों को अनदेखा करना जहाँ वे अकेले दिखाई देते हैं, वह 220 झूठी सकारात्मकताएं हैं। तो चलिए उन चार अक्षरों में से किसी के भी शुरुआती शब्दों को हटा दें।

जब हम उन ( / ^[dghs]\w*), केस-असंवेदनशील ( /i), और उसके बाद कम से कम एक गैर-शब्द चरित्र ( \W\+) के साथ आरंभिक शब्द देखते हैं , तो एक खाली स्ट्रिंग के साथ बदलें। फिर, पहले अक्षर को उसके अपरकेस ( s/./\U&/) के साथ बदलें ।

जो हमें देता है

s/^[dghs]\w*\W\+//i
s/./\U&/

अब हम इसे थोड़ा परिष्कृत कर सकते हैं:

  • झूठी सकारात्मकता का सबसे बड़ा सेट है how, इसलिए हम एक नकारात्मक परीक्षण के साथ उपसर्ग करके प्रतिस्थापन की स्थिति बनाते हैं:

     /^[Hh]ow\b/!
  • हम दूसरे अक्षर को भी खत्म करने के लिए फ़िल्टर कर सकते हैं g'd, speakऔर sweet:

    s/^[dghs][eruaio]\w*\W\+//i
  • यह केवल goodएक झूठी सकारात्मक के रूप में छोड़ देता है । हम wया तो समाप्त होने वाले शब्दों को समाप्त करने के लिए उपसर्ग परीक्षण को समायोजित कर सकते हैं या d:

    /^\w*[wd]\b/!

प्रदर्शन

$ diff -u <(./123478.sed inputs.txt) replaced.txt | grep ^- | wc -l
0

9

रेटिना , 68% 72.8% (पुराना) 74.8% 77.5% (नई परीक्षण बैटरी)

i`^h(a[iy]|eya?|i(h?i|ya|)|ello)[ ,]+

T`l`L`^.

इसे ऑनलाइन आज़माएं! संपादित करें: @ मार्टिन की युक्तियों की मदद से 4.8% (पुराना) 2.7% (नया) कवरेज प्राप्त किया।


1
मुझे लगता है कि आप [ ,]+ कुछ और बाइट्स को निचोड़ने के लिए कर सकते हैं । आप hवैकल्पिक से भी निकाल सकते हैं ।
मार्टिन एंडर

यकीन नहीं है, लेकिन i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+काम कर सकते हैं जिसका अर्थ है कि आपके पास 8 बाइट्स हैं
केवल

@ ASCII- केवल h?i?कुछ भी नहीं बचाता है h?i|और यह मैच होगा hih(हालांकि मुझे नहीं पता कि यह परीक्षण के मामलों में भी है)।
मार्टिन एंडर

वास्तव में, यह एक बाइट को बचाता है यदि आप करते हैं ih?i?|iya
मार्टिन एंडर

शायद i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+तब
केवल

6

PHP, 60.6%

50 बाइट्स

<?=ucfirst(preg_replace("#^[dh]\w+.#i","",$argn));

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

PHP, 59.4%

49 बाइट्स

<?=ucfirst(preg_replace("#^h\w+,? #i","",$argn));

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

PHP, 58.4%

50 बाइट्स

<?=ucfirst(preg_replace("#^[gh]\w+.#i","",$argn));

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


1
60.1%:#^[gh]\w+.#
मैनेटवर्क

अरे, मैं एक नई परीक्षण बैटरी में बदल गया हूं, क्या आप अपने उत्तर को अपने नए स्कोर के साथ अपडेट कर सकते हैं? धन्यवाद
बीटा

@BetaDecay अपडेट किया गया है
Jörg Hülsermann

4

विम, 55.4% 44.4%

df,<<vgU

स्पष्टीकरण:

df,    Delete until and including the first comma
<<     Remove leading spaces
vgU    Uppercase first letter

अरे, मैं एक नई परीक्षण बैटरी में बदल गया हूं, क्या आप अपने उत्तर को अपने नए स्कोर के साथ अपडेट कर सकते हैं? धन्यवाद
बीटा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.