हकलाना एक ऐसी समस्या है जिसका हम में से कई लोगों ने अनुभव किया होगा या कम से कम इसे देखा होगा। यद्यपि अधिकांश प्रसिद्ध भाषण मान्यता सॉफ्टवेयर्स के साथ गंभीर मुद्दों पर बात की जाती है, चलो एक सॉफ्टवेयर की कल्पना करते हैं जो हकलाना समझता है, लेकिन उन्हें ठीक नहीं कर सकता है और केवल उन्हें ही लिख सकता है।
इस तरह के एक सॉफ्टवेयर द्वारा लिखित एक उदाहरण इस तरह हो सकता है: "कृपया सावधान रहें सावधान" । इस उदाहरण में "सावधान" मूल शब्द है और "सीए" स्टट्ड शब्द हैं।
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें जो मूल शब्दों को रखते हुए इनपुट से हटाए गए शब्दों को ठीक करता है। का उदाहरण तय संस्करण के लिए "कृपया हो सीए सीए सावधान" होगा "कृपया सावधान रहें" ।
यह कोड-गोल्फ है , हर भाषा में सबसे कम जवाब जीतता है!
फंसे हुए शब्द क्या हैं?
हकलाने के कई अलग-अलग रूप हैं। लेकिन इस चुनौती की सरलता के लिए, हम इसे निम्नलिखित नियमों तक सीमित करने जा रहे हैं:
- रुके हुए शब्द एक अपूर्ण भाग या पूरे मूल शब्द हो सकते हैं। "असम्बद्ध भाग" से मेरा मतलब है कि मूल शब्द वास्तव में रूके हुए शब्द से शुरू होना चाहिए। उदाहरण के लिए "ope" और "खुले" दोनों के लिए एक stuttered शब्द हो सकता है "खुला" , लेकिन "कलम" के बाद से एक नहीं हो सकता "खुला" के साथ शुरू नहीं करता है "कलम" ।
- अटके हुए शब्दों में कम से कम "aeiou" स्वर शामिल होना चाहिए । उदाहरण के लिए "स्टार" "स्टार्ट" के लिए एक स्टूट्ड शब्द हो सकता है क्योंकि इसमें "ए" होता है , लेकिन "सेंट" एक स्टूट्ड शब्द नहीं हो सकता है क्योंकि इसमें कोई उल्लिखित स्वर नहीं है।
- रूके हुए शब्द केवल मूल शब्द के सामने आ सकते हैं और मान्य होने के लिए कम से कम दो बार दोहराया जाना चाहिए (मूल शब्द दोहराव में नहीं गिना जाता है)। उदाहरण के लिए "ओओ ओपन" ने शब्दों को तोड़ दिया है, लेकिन "ओ ओपन ओ" नहीं है, क्योंकि मूल शब्द के बाद "ओ" की गिनती नहीं होती है और "ओ" से पहले मूल शब्द कम से कम दो बार दोहराया नहीं जाता है। "गो गो गो गो गो गो" मूल शब्द से पहले फंसे हुए शब्दों के पांच दोहराव हैं और मान्य है।
- दोहराए गए शब्दों के एकल सेट में मिश्रित रूप नहीं हो सकते हैं और शब्द एक दूसरे के समान होने चाहिए। उदाहरण के लिए "ओप ओ ओपेन ओपन" को शब्दों के रूप में नहीं गिना जाता है। दूसरी ओर "ओ ओपी ओपेन ओपन" ने शब्दों को तोड़ दिया है क्योंकि पहले "ओ" को यहां एक अलग शब्द के रूप में देखा जाता है और दो "ओपी" को "ओपन" के रूखे शब्दों में गिना जाता है ।
- एक-दूसरे के ठीक बाद दोहराए गए शब्दों के कई मान्य सेटों के मामले में, केवल अंतिम मूल शब्द ही रहता है। उदाहरण के लिए, "ooo op op op op" में , "oo o" भाग को पहले "op" के रूखे शब्दों के रूप में देखा जाता है , इसलिए उन्हें हटा दिया जाना चाहिए और फिर "op op op" को "open op op" के रूप में देखा जाता है। " और उन्हें भी हटा दिया जाना चाहिए, इसलिए केवल " खुले " को हटाए गए शब्दों को हटाने के बाद छोड़ दिया जाएगा। आप मान सकते हैं कि दोहराए गए शब्दों के कई वैध सेट केवल बाएं से दाएं होते हैं, इसलिए "ओप ओओ ओपन" को ठीक करने के परिणामस्वरूप "ओप ओपन ओपन" होगा (उर्फ
इनपुट
- इनपुट एक एकल पंक्ति स्ट्रिंग है जिसमें केवल ASCII अंग्रेजी अक्षर (az), अंक (0-9) और अंतरिक्ष वर्ण हैं। लेटर केसिंग महत्वपूर्ण नहीं है और आप लोअरकेस या अपरकेस या उन दोनों को स्वीकार करने का निर्णय ले सकते हैं, लेकिन आवरण समान रहना चाहिए और आप इसे आउटपुट में नहीं बदल सकते।
- आप
["l","i","s","t"," ","o","f"," ","l","e","t","t","e","r","s"]स्ट्रिंग की बजाय अक्षरों की सूची (जैसे ) का उपयोग कर सकते हैं, लेकिन आप शब्दों की सूची का उपयोग नहीं कर सकते। यदि आपकी भाषा में एक अलग इनपुट संरचना है, तो इसका उपयोग करें। मुद्दा यह है कि इनपुट को शब्दों से अलग नहीं किया जाना चाहिए, इसलिए कुछ भाषाओं में शब्दों को अलग करने की लागत वास्तव में अन्य रचनात्मक समाधानों को ट्रिगर कर सकती है। - इनपुट में कोई भी, एक या एक से अधिक शब्द नहीं हो सकते हैं।
- शब्दों और संख्याओं को एक ही स्थान से अलग किया जाता है और इनपुट में एक दूसरे के ठीक बगल में दोहरे स्थान नहीं होंगे।
उत्पादन
- एक स्ट्रिंग या पत्र की एक सूची या आपकी भाषा में उपयुक्त संरचना जिसमें इनपुट से हटाए गए सभी लटके हुए शब्द हैं।
- आउटपुट शब्दों को बिल्कुल एक स्थान (इनपुट के समान) द्वारा अलग किया जाना चाहिए।
- सिंगल लीडिंग और ट्रेलिंग न्यूलाइन या स्पेस की अनुमति है।
मानक खामियों को मना किया जाता है।
परीक्षण के मामलों
कोई शब्द नहीं:
"hello world" => "hello world"
दोहराए गए शब्दों का एक एकल उदाहरण:
"ope ope ope ope open the window" => "open the window"
दोहराया शब्दों के कई उदाहरण:
"there is is is is something un un under the the the table" => "there is something under the table"
कोई रूका हुआ शब्द नहीं, पर्याप्त दोहराया नहीं:
"give me the the book" => "give me the the book"
कोई स्टूट्ड शब्द नहीं है, कोई भी उल्लिखित स्वर नहीं है:
"h h help m m m me" => "h h help m m m me"
संख्याओं को शब्दों में बँधा नहीं है, उनके पास उल्लिखित स्वर नहीं हैं:
"my nu nu number is 9 9 9 9876" => "my number is 9 9 9 9876"
लेकिन दोनों स्वरों और संख्याओं के साथ एक शब्द में अटके हुए शब्द हो सकते हैं:
"my wi wi windows10 is slow" => "my windows10 is slow"
एक ही रिपीट ग्रुप में अटके शब्दों के अलग-अलग रूपों की गणना नहीं की जाती है:
"this is an ant antarctica does not have" => "this is an ant antarctica does not have"
एक दूसरे के ठीक बाद के शब्दों के कई निरंतर सेटों के लिए, केवल अंतिम मूल शब्द रखें:
"what a be be be beauti beauti beautiful flower" => "what a beautiful flower"
यह एक दूसरे के ठीक बाद के कई निरंतर सेट का मामला नहीं है:
"drink wat wat wa wa water" => "drink wat wat water"
खाली इनपुट:
"" => ""
टिप्पणियों से अधिक मामले:
"a ab abc" => "a ab abc"
"a ab ab abc" => "a abc"
"ab ab abc abcd" => "abc abcd"
"a a ab a able" => "ab a able"
"i have ave ave average" => "i have average"
"my wi wi windows 10 is cra cra crap" => "my windows 10 is crap"
उपरोक्त परीक्षण मामलों की सूची की प्रतिलिपि बनाना आसान है:
"hello world",
"ope ope ope ope open the window",
"there is is is is something un un under the the the table",
"give me the the book",
"h h help m m m me",
"my nu nu number is 9 9 9 9876",
"my wi wi windows10 is slow",
"this is an ant antarctica does not have",
"what a be be be beauti beauti beautiful flower",
"drink wat wat wa wa water",
"",
"a ab abc",
"a ab ab abc",
"ab ab abc abcd",
"a a ab a able",
"i have ave ave average",
"my wi wi windows 10 is cra cra crap"
"drink wat wat wa wa water" => "drink wat wat water"यह वास्तव में ऐसा लगता है कि नियम को पुनरावर्ती रूप से लागू करना चाहिए ताकि यह "पेय पानी" बन जाए