आपको एक प्रोग्राम लिखने का काम सौंपा गया है, जो शब्दों को टेक्स्ट के एक स्ट्रिंग में हाइफ़न के साथ अलग-अलग करता है। यह बहुत काम आएगा, इसलिए आप कुछ हिस्सों को छोड़ना चाहते हैं, मुख्यतः क्योंकि आप सही एल्गोरिथ्म के लिए आवश्यक उच्चारण की तालिका नहीं चाहते हैं। आप इसे इस कार्य के लिए दिए जाने वाले बदला के रूप में यथासंभव संक्षिप्त (और इस प्रकार अपठनीय और अप्राप्य) बनाना चाहते हैं।
आपके पास दो विकल्प हैं:
- एक प्रोग्राम लिखें जो STDIN से स्ट्रिंग लेता है और परिणाम को STDOUT में आउटपुट करता है।
- एक फ़ंक्शन लिखें जो स्ट्रिंग को एकल पैरामीटर के रूप में लेता है, और परिणाम देता है।
विशिष्टता
- इस स्थिति में, स्ट्रिंग का अर्थ है अपनी पसंद की भाषा (बाइट सरणियों, चरित्र सरणियों, तार ...) में किसी भी स्ट्रिंग की तरह निर्माण।
- स्वर हैं
a, e, i, o, u - दिए गए स्ट्रिंग में
1 <= n <= 10शब्द हैं, जहां प्रत्येक में1 - 30वर्णों के बीच की लंबाई है , समावेशी .. आपका आउटपुट उन शब्दों को हाइफ़न होना चाहिए। - सभी अक्षर निचले हैं और शब्द हमेशा रिक्त स्थान के साथ अलग होते हैं। इस प्रकार, इनपुट में वर्ण होते हैं
[a-z ] - महत्व के क्रम में नियम लागू करें।
- जब कोई शब्द विभाजित होता है, तो शब्द के दाहिने आधे हिस्से के साथ फिर से शुरू करें।
महत्व के क्रम में, पाठ्यक्रम के नियम
लगातार दो एक ही स्वर गिनती के रूप में एक (यानी। feetकेवल एक ही स्वर है, लेकिन beatऔर findingदो है)। प्रत्येक शब्दांश में एक स्वर होता है, इस प्रकार प्रत्येक स्वर के लिए एक शब्दांश होता है।
- यदि पूरे शब्द में केवल चार अक्षर हैं, तो उसे अपरिवर्तित लौटा दें। (शेष शब्द के लिए इसे छोड़ें)
- यदि शब्द में केवल एक स्वर है, तो अपरिवर्तित शब्द वापस करें।
- यदि शब्द में दो लगातार स्वर हैं, तो उनके बीच विभाजित करें (जैसे।
diaspora->di-as-po-ra) - जब दो या दो से अधिक व्यंजन दो स्वरों (समान या भिन्न) के बीच आते हैं, तो पहले व्यंजन (यानी।
sis-ter) के बाद विभाजित करें जब तक कि व्यंजन भाग नहीं होता हैck, उस स्थिति में शब्द को उसके बाद विभाजित करते हैं। (अर्थातnickel->nick-el) - जब
yदो स्वरों के बीच आता है, तो इसके बाद शब्द को विभाजित करें (जैसेpaying->pay-ing)। - जब एक व्यंजन दो स्वरों (एक ही या अलग) के बीच आता है, तो व्यंजन (यानी
dra-gon) से पहले विभाजित करें। - यदि कोई विभाजन नहीं किया जा सकता है तो अपरिवर्तित शब्द लौटाएं।
मैंने इन नियमों को चुना, क्योंकि उन्हें समस्याओं के बिना पुनरावर्ती रूप से लागू किया जा सकता है और बिना उच्चारण तालिकाओं की आवश्यकता होती है। इस प्रकार, वे सटीक नहीं हैं, और उदाहरण के लिए नियम # 5 अक्सर सही नहीं होता है। सामान्य मामले में, यह है।
उदाहरण
In: hello world
Out: hel-lo world
In: have a nice day
Out: have a nice day
In: pour some nickel and xenon there
Out: pour some nick-el and xe-non the-re
lua
x-e-non? नियम # 4 का संदर्भ?