एक स्ट्रिंग को इसके Rövarspråket समकक्ष में बदलें


15

Rövarspråket

Rövarspråket स्वीडिश बच्चों द्वारा, एस्ट्रिड लिंडग्रेन द्वारा Kalle Blomkvist के बारे में किताबों से खेला जाने वाला एक शब्द का खेल है।

मूल नियम इस प्रकार हैं (विकिपीडिया से):

  • हर व्यंजन (वर्तनी के मामले, उच्चारण नहीं) दोगुना हो जाता है, और बीच में एक ओ डाला जाता है।
  • स्वर बरकरार हैं।

कुछ उदाहरण:

  • "हैलो" -> "होहलोलोलो"
  • "मिन svvvare är पूरा मेडल" -> "MoMinon sosvovävovarore äror fofulollol Momedod ålol"

स्वीडिश व्यंजन अंग्रेजी वालों के समान हैं, इसलिए कार्यक्रम को स्वीडिश और अंग्रेजी दोनों प्रविष्टियों के साथ काम करना चाहिए।

अक्षर "y" को इस मामले में व्यंजन के रूप में लिया जाता है - जैसा कि अधिकतर समय होता है।


आपका कार्य:

स्वीडिश अक्षरों की एक स्ट्रिंग को परिवर्तित करने के लिए एक प्रोग्राम लिखें, जो एक फ़ंक्शन के माध्यम से या स्टड के माध्यम से इनपुट किया जाता है, इसके रोवरस्प्रेटेक के बराबर है। बाइट्स जीत में सबसे छोटा जवाब!


@ मार्टिनबटनर ने मेरे प्रश्न को और स्पष्ट किया - यह स्वीडिश के साथ काम करना चाहिए (क्योंकि यह स्वीडिश शब्द-खेल है)।
जेम्स विलियम्स

वर्णमाला प्रविष्टियों का अर्थ क्या है?
ऑप्टिमाइज़र

@ ऑप्टिमाइज़र केवल वर्णमाला वर्णों की एक स्ट्रिंग। क्षमा करें, मैंने इसे बुरी तरह से शब्द दिया, मैं संपादित करूँगा
जेम्स विलियम्स

3
हमें गैर पत्रों का इलाज कैसे करना चाहिए? कम से कम रिक्त स्थान दूसरे उदाहरण में दिखाई देते हैं।
नौमी

2
एक तरफ ध्यान दें: 'Y' को स्वीडिश में एक स्वर माना जाता है
leo

जवाबों:


14

रेटिना , 14 + 5 = 19 बाइट्स

रेटिना एक ऐसी भाषा है जो अनिवार्य रूप से सिर्फ .NET regex है जिसमें जितना संभव हो उतना कम ओवरहेड है। इस प्रोग्राम के कोड में दो फाइलें हैं:

i`[b-z-[eiou]]
$0o$0

यह STDIN पर इनपुट को पढ़ता है और आउटपुट को STDOUT में प्रिंट करता है।

यदि आप फ़ाइलों को कॉल करते हैं pattern.rgxऔर replacement.rpl, आप प्रोग्राम को उसी तरह चला सकते हैं

echo "hello" | ./Retina pattern.rgx replacement.rpl

व्याख्या

यह बहुत सीधा है, लेकिन मुझे वैसे भी कुछ स्पष्टीकरण जोड़ने दें (ज्यादातर रेटिना कैसे काम करता है)। यदि रेटिना को 2 फ़ाइलों के साथ लागू किया जाता है, तो इसे "रिप्लेसमेंट मोड" में संचालित करने के लिए स्वचालित रूप से मान लिया जाता है, जहां पहली फ़ाइल regex है और दूसरी फ़ाइल पैटर्न है।

रेटिना को एक विन्यास स्ट्रिंग के RegexOptionsसाथ regex से जोड़कर (जिसमें और अन्य विकल्प शामिल हैं) कॉन्फ़िगर किया जा सकता है `। इस मामले में मैं केवल इसे दे रहा हूं iजो कि केस असंवेदनशीलता के लिए सामान्य रेगेक्स संशोधक है।

स्वयं regex के लिए, यह ASCII रेंज में किसी भी व्यंजन से मेल करने के लिए .NET के चरित्र वर्ग घटाव का उपयोग करता है। प्रतिस्थापन तो बस oबीच में एक साथ मैच दो बार वापस लिखता है ।


क्या आप aअपने स्वर चरित्र वर्ग में याद कर रहे हैं ?
ब्रायन गॉर्डन

3
@BrianGordon नहीं, मैं चरित्र वर्ग से शुरू कर रहा हूं b, इसलिए मुझे घटाना नहीं चाहिए a
मार्टिन एंडर

2
दिलचस्प है, मैंने पहले कभी भी नेस्टेड, सबट्रैक्टिव कैरेक्टर रेंज नहीं देखी। यह सिर्फ एक .NET बात है?
स्टीव बेनेट

मुझे लगता है कि आपको दो फाइलों के बीच परिसीमन के लिए कम से कम एक चरित्र को गिनने की आवश्यकता है। यह एक अर्धविराम या किसी अन्य भाषा में न्यूलाइन होगा। यदि आप इस भाषा में चरित्र कहाँ से लाना चाहते हैं, इसके बारे में बात करना चाहते हैं, तो यह फ़ाइल नाम के बीच का स्थान है।
शुक्राणु

@ उत्तर हां, यह नीति अभी है, लेकिन यह नीति इस चुनौती / उत्तर से नई है। संदर्भ के लिए (वास्तव में, यदि आप समय टिकटों को देखते हैं, तो आप देख सकते हैं कि मैंने इस उत्तर के कारण नीति के लिए धक्का दिया , लेकिन इस तरह के नियमों को लागू करने से साइट पर कोई फर्क नहीं पड़ता है।)
मार्टिन एंडर

12

यूनिक्स केएसएच 27 28 32 27 बाइट्स का उपयोग करना (या 21 यदि हम केवल सेड कमांड के अंदर गिनती करते हैं)

दूसरों के सुझावों के लिए धन्यवाद :) सराहना की।

.. मैं इसके लिए नीचे उतर गया:

sed 's/[^AEIOUÅÄÖ ]/&o&/ig'

(रिक्त स्थान और स्वीडिश वर्णों के लिए अनुमत)

echo "hello" | sed 's/[BCDFGHJ-NP-TV-Z]/&o&/ig'
hohelollolo
echo "HELLO" | sed 's/[BCDFGHJ-NP-TV-Z]/&o&/ig'
HoHELoLLoLO
echo "QuIcKlY Now" | sed 's/[BCDFGHJ-NP-TV-Z]/&o&/ig'
QoQuIcocKoKlolYoY NoNowow

5
इसके अलावा, मुझे लगता है कि यह दावा करने की अनुमति है कि आपका जवाब एक sedकार्यक्रम है, और बस एकल उद्धरणों के बीच बाइट्स की गिनती करें
डिजिटल ट्रॉमा

1
s/[^AEIOU]/&o&/igलगता है काम करने के लिए .. कम से कम एक शब्द के लिए ... आपको रिक्त स्थान भी बाहर करने की आवश्यकता होगी
डिजिटल ट्रॉमा

1
बैश, हालांकि शेल को कोई फर्क नहीं पड़ता, इसलिए जब तक आपका sed प्रोग्राम सिंगल कोट्स में है
डिजिटल ट्रॉमा

1
इसके अलावा स्वीडिश स्वरों के लिए बाहर घड़ी ö, å, आदि - इन की जरूरत भी शामिल नहीं है। सिर्फ व्यंजन के एक श्वेतसूची का उपयोग करने के लिए बेहतर हो सकता हैs/[BCDFGHJ-NP-TV-Z]/&o&/ig
डिजिटल ट्रॉमा

2
मैं इसे 'सेड' बनाऊंगा और "s / [^ AEIOU /] / & o & / ig" का उपयोग करूंगा, जिसमें स्वीडिश स्वर और 25 बाइट्स के लिए रिक्त स्थान शामिल हैं।
स्वस्तिक

7

CJam, 32 30 बाइट्स

q{_eu'[,66>"EIOU"-#)g{'o1$}*}/

यह एसटीडीआईएन से मुद्रण और एसटीडीयूएसटी के लिए एक पूर्ण कार्यक्रम है। यह यूनिकोड इनपुट के लिए काम करता है और निम्नलिखित 42 अक्षरों को व्यंजन के रूप में मानता है:

BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz

इसका परीक्षण यहां करें।

व्याख्या

q                              "Slurp STDIN.";
 {                          }/ "For each character...";
  _eu                          "Duplicate and convert to upper case.";
     '[,66>                    "Get a string from B to Z using range and slice.";
           "EIOU"-             "Remove the remaining four vowels.";
                  #            "Find the position of the character in this string or
                                -1 if the character can't be found.";
                   )g          "Increment, take signum, which gives 1 for consonants, 
                                and 0 otherwise.";
                     {    }*   "Repeat this block that many times, i.e. do nothing for
                                non-consonants.";
                      'o       "Push an 'o'.";
                        1$     "Copy the current character.";

5

जावास्क्रिप्ट, 59 57 55 44 बाइट्स

s=>s.replace(/(?![eiou])[b-z]/gi,"$&o$&")

मुझे याद दिलाने के लिए मास्टरज़ैग को धन्यवाद कि एक समारोह भी स्वीकार्य होगा, और उसके रेगेक्स टिप के बिना बैकरेफेरिंग के संबंध में!

इनपुट / आउटपुट के साथ लंबा संस्करण:

alert(prompt().replace(/(?![eiou])[b-z]/gi,"$&o$&"));

स्ट्रिंग में प्रवेश करने के लिए एक शीघ्र बॉक्स प्रदर्शित करता है, फिर एक संवाद दिखाता है जिसमें Rövarspråket आउटपुट होता है। कोड व्यंजन को दोगुना करने और oएस डालने के लिए एक रेगेक्स का उपयोग करता है ।


"स्वीडिश अक्षरों की एक स्ट्रिंग को बदलने के लिए एक प्रोग्राम लिखें, एक फ़ंक्शन के माध्यम से या s=>alert(s.replace(/(?![eiou])([b-z])/gi,"$1o$1"));

और चूंकि इसे आउटपुट के लिए नहीं कहा गया था, इसलिए आपको अलर्ट की आवश्यकता नहीं है।

एक और बात, आप कैप्चरिंग के बिना बैकरेस्ट कर सकते हैं । मूल रूप से करते हैं s=>s.replace(/(?![eiou])[b-z]/gi,"$&o$&"), क्योंकि $&वर्तमान मैच का मतलब है कि आप कोष्ठक को हटा सकते हैं जो आपके पत्र पर कब्जा कर लेते हैं और जब आप इसमें होते हैं तो अंत में अर्धविराम हटाकर एक और बाइट बचाते हैं।

@Masterzagh यह अच्छा है, फिर से धन्यवाद!
प्रोग्राम

4

गणितज्ञ, 84 73 72 बाइट्स

StringReplace[#,a:RegularExpression@"(?i)[BCDFGHJ-NP-TV-Z]":>a<>"o"<>a]&

स्पष्टीकरण:

  • RegularExpression@"(?i)[BCDFGHJ-NP-TV-Z]" एक रेगेक्स है जो सभी व्यंजन केस-असंवेदनशील रूप से मेल खाता है।
  • a:*..*:>a<>"o"<>aउन व्यंजन को बांधने के लिए एक विलम्बित नियम बनाता है a, और इसे स्वयं के चारों ओर ओ से बदल कर बदल देता है।
  • अंत में, StringReplace[#,*..*]&अपने तर्क में प्रत्येक मिलान पत्र पर उस नियम को लागू करने वाला एक शुद्ध कार्य बनाता है।

@ मार्टिनबटनर धन्यवाद! मैथेमेटिका गोल्फिंग के लिए अभी भी नया ...
लीजनमैनल 978

@ मार्टिनबटनर वैसे भी करने जा रहे थे, लेकिन कुछ सूचनाओं से विचलित हो गए: P
LegionMammal978

4

जूलिया, 46 44 बाइट्स

t->replace(t,r"(?![eiou])[b-z]"i,s->s*"o"*s)

यह एक अनाम फ़ंक्शन बनाता है जो एकल स्ट्रिंग इनपुट लेता है और Rövarspråket के बराबर प्रिंट करता है। इसे कॉल करने के लिए, इसे एक नाम दें, जैसे f=t->...

बहुत कुछ वास्तव में यहाँ नहीं किया गया है, अल्पविराम के बाद रिक्त स्थान के अलावा replace()

यहां हम replace()फ़ंक्शन में 3 तर्कों का उपयोग कर रहे हैं : इनपुट स्ट्रिंग, सबस्ट्रिंग की पहचान के लिए नियमित अभिव्यक्ति, और एक प्रतिस्थापन। जूलिया द्वारा नियमित अभिव्यक्ति पैटर्न को दर्शाता है r"..."iअंत तक जोड़ना असंवेदनशील हो जाता है। यह विशेष रेगेक्स व्यंजन से मेल खाता है। यदि किसी फ़ंक्शन को प्रतिस्थापन के लिए उपयोग किया जाता है, तो आउटपुट वह फ़ंक्शन प्रत्येक मिलान किए गए प्रतिस्थापन के लिए लागू होता है। हम यहां जिस फ़ंक्शन का उपयोग कर रहे हैं , वह स्ट्रिंग sऔर रिटर्न लेता है sos, क्योंकि *जूलिया में स्ट्रिंग कॉन्फैनेटेशन करता है। इस प्रकार अंतिम परिणाम प्रत्येक '' ओ '' के साथ दोगुने प्रत्येक व्यंजन के साथ इनपुट स्ट्रिंग है।

उदाहरण:

julia> f("Min svävare är full med ål")
"MoMinon sosvovävovarore äror fofulollol momedod ålol"

julia> f("hello")
"hohelollolo"

julia> f("Rövarspråket")
"RoRövovarorsospoproråkoketot"

ध्यान दें कि यह 9 बाइट्स लंबा होगा यदि हमें इसे वापस करने के बजाय परिणाम प्रिंट करना है। ओपी से पुष्टि की प्रतीक्षा।


संपादित करें: मार्टिन ब्यूटनर को 2 बाइट्स धन्यवाद सहेजे गए!


3

हास्केल, 81 बाइट्स

x n|elem n"bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"=[n,'o',n]|1<2=[n]
f=(>>=x)

उपयोग: f "Hello there!"-> "HoHelollolo tothoherore!"

मैं चतुराई से महंगा importएस के बिना व्यंजन की सूची का निर्माण नहीं कर सकता । यहां तक ​​कि अक्षर को कम करने के लिए जांच करने के लिए ऊपरी और निचले दोनों व्यंजन को सूचीबद्ध करने की तुलना में अधिक बाइट्स की आवश्यकता होती है।


3

जावा 8, 45

एक लंबोदा फ़ंक्शन के रूप में उपयोग करें। नियमित अभिव्यक्ति का उपयोग करता है।

a->a.replaceAll("(?i)[b-z&&[^eiou]]","$0o$0")

यहाँ कोशिश करो


"एक कार्यक्रम लिखें ..." यह मेरे लिए एक फ़ंक्शन की तरह दिखता है।
जोनास बिस्ट्रॉम

2

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

यह उत्तर ज्यादातर रेगेक्स-ओनली है, जिसमें थोड़ी मात्रा में अतिरिक्त कोड I / O है।

$_=<>;s/[^aeiou\W]/$&o$&/gi;print

जब से मैंने पर्ल रेगेक्स का उपयोग किया है, तब से यह एक समय हो गया है, इसलिए यह शायद बेहतर हो सकता है।

$_=<>;                              This takes input from STDIN `<>` and stores
                                    it into the default variable $_
      s/          /     /gi;        This is a case-(i)nsentive, (g)lobal, 
                                    (s)ubstitution regex.  Since no other
                                    variable is specified, it is applied to
                                    the default variable $_.
        [^aeiou\W]                  This matches any single character that 
                                    is a consonant, by using a double-
                                    negative ^\W to match only alphanumeric 
                                    characters excluding vowels.  Accented 
                                    vowels are not considered alphanumeric 
                                    by Perl.
                   $&o$&            This forms the replacement.  $& contains the 
                                    match (the consonant), so this replaces each 
                                    consonant with two copies of itself with 
                                    an 'o' in between.
                            print   This prints the result.  With no arguments, 
                                    it prints $_ by default.

[^aeiou]अभी भी å और अन्य गैर-ASCII स्वरों का मिलान नहीं होगा ?
एलेक्स ए।

@AlexA। मैंने पहले ही समस्या पर ध्यान दिया। यह एक शून्य-वर्ण फिक्स ( \sको \W) था।
PhiNotPi

+1, पर्ल कोड के लिए सबसे गहन विवरण मैंने इस साइट पर देखा है।
झगरब

2

अजगर, ६१

मुझे काम करने के लिए एक चरित्र वर्ग संघ या घटाव नहीं मिल सकता है, और इसलिए मुझे नहीं लगता कि पायथन में वह विशेषता है। मुझे इसके बजाय नकारात्मक रूप का उपयोग करना पड़ा।

import re;f=lambda s:re.sub('(?i)(?![eiou])([b-z])',r'\1o\1',s)

इसे यहां चलाएं: http://repl.it/fQ5

उलटा लिंक: /codegolf//a/48182/34718


2

विंडोज बैच, 235 बाइट्स

@echo off
setlocal enabledelayedexpansion
set d=qwrtypsdfghjklzxcvbnm
set #=%1
:x
if defined # (
for /l %%i in (0,1,20)do (
set m=!d:~%%i,1!
if /i !m!==%#:~0,1% set g=!g!!m!o)
set g=!g!%#:~0,1%
set #=%#:~1%
goto x)
echo %g%

उपयोग:

script.bat hello

आउटपुट:

hohelollolo

आप सोच रहे होंगे कि मैंने "aoui" के लिए d सेट क्यों नहीं किया, नहीं-बराबर के लिए जाँच करने के लिए एक लूप से बाहर निकलने की आवश्यकता होती है। सब कुछ नहीं जो काम करना चाहिए, काम करता है, बैच में। स्क्रिप्ट पात्रों के 1 शब्द को संभालती है [जैसा कि वे आपके कीबोर्ड पर दिखाई देते हैं]। स्क्रिप्ट के चलने के लिए अभी भी मौजूद सभी रिक्त स्थान और न्यूलाइन्स आवश्यक हैं।

Windows XP या उच्चतर, आवश्यक। विंडोज 8 और इसके बाद के संस्करण में परीक्षण नहीं किया गया।


2

पॉवरशेल - 35 बाइट्स

बस दिखाने के लिए कि PowerShell इन में भी कभी-कभी प्रतिस्पर्धा कर सकता है, और मार्टिन ब्यूटनर के रेटिना उत्तर से बेशर्मी से रेगेक्स के साथ:

%{$_-replace'[b-z-[eiou]]','$0o$0'}

स्टड से स्ट्रिंग इनपुट स्वीकार करता है


2

C 109

गोल्फ के कुछ बहुत अच्छे टुकड़ों के लिए @ceilingcat को धन्यवाद - अब और भी कम

x;main(c){for(;~(c=getchar());printf("%s%s%s",&c,x+"o",x?"":&c))x=c<66|c>122|c>90&c<98||index("EIOUeiou",c);}

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


स्थानीय चर को कैसे cघोषित किया जाता है?
wjl

C में @wjl वैश्विक चर शून्य आरंभीकृत हैं। स्थानीय चर स्टैक पर हैं और आरंभिक नहीं हैं। देखें stackoverflow.com/questions/3553559/… एक प्रकार से डिफ़ॉल्ट के साथ चर int करने के लिए और चूंकि प्रिंट पर काम करता है कोड में एंडियन मुद्दे हो सकते हैं - मैं कल जांच करूंगा।
जेरी यिर्मयाह

हां, मैं डिफ़ॉल्ट आरंभीकरण को समझता हूं। मैं बस अच्छी तरह से यह बताने की कोशिश कर रहा था कि यह कोड संकलित नहीं है क्योंकि cयह बिल्कुल भी घोषित नहीं है , जैसे out.c:2:18: error: ‘c’ undeclared (first use in this function)
wjl

@ मुझे लगता है कि यह संकलक पर निर्भर करता है। यह संकलित करता है और ideone.com पर चलता है ideone.com/s7M5mZ जब आप C चुनते हैं - कोई भी विचार क्या अंतर है?
जेरी यिर्मयाह

Ideone के संकलक के साथ एक बग जैसा दिखता है। यदि आप के बीच नई लाइन को ठीक करते हैं c[2];main(आवश्यक है क्योंकि #defineअर्धविराम पर समाप्त नहीं होता है) तो यह जीसीसी के समान त्रुटियां देता है। वैसे भी, कोई बड़ी बात नहीं, यह अभी भी एक मजेदार कोड-गोल्फ है, लेकिन आपको इस वैध सी। बनाने के लिए वास्तव में कुछ और पात्रों की आवश्यकता हो सकती है। =)
wjl

2

हो सकता है u(अपरकेस में) एक बाइट को बचाने के लिए। और अच्छा जवाब!
केविन क्रूज़सेन

मैं सिर्फ महसूस कर रहा था 13 बाइट्स संभव था .. मुझे इसे खोजने के लिए थोड़ा सा लगा, हालांकि:žNDu«SD'o«€Ć‡
केविन क्रूज़सेन

हाहा, मैं ऊपरी के बजाय "पूंजी" की खोज कर रहा था, सुधार के लिए धन्यवाद @ केविनक्रूजसेन
माबेल

1

पायथ - 28 बाइट्स

यह सेट-वार अंतर का उपयोग करके मक्खी पर व्यंजन सूची तैयार करके स्पष्ट तरीके से काम करता है।

FNzpk+N?+\oN}rNZ-{G{"aeiou"k

स्पष्टीकरण जल्द ही आ रहा है।

इसे यहाँ आज़माएँ


आप 4 वर्णों को हटाकर और एक char को दूसरे के साथ बदलकर 4 बिट्स बचा सकते हैं।
जकुबे



1

के, 38 वर्ण

f:{,/(1+2*~(_x)in"aeiouåäö ")#'x,'"o"}

-1 f"Min svävare är full med ål";
MoMinon sosvovävovarore äror fofulollol momedod ålol

1

के, 31 बाइट्स

,/{(x,"o",x;x)9>" aeiouåäö"?x}'

एक सीधा समाधान काफी प्रतिस्पर्धी लगता है जिसे देखते हुए के की कमी है। "XoX" फ़ॉर्म और "X" फ़ॉर्म के बीच चयन करें कि क्या प्रत्येक वर्ण को अनदेखा किए गए स्वरों के लुकअप तालिका में पाया गया था और परिणामी सूचियों में शामिल हुआ था।

आप अपने ब्राउज़र में इसे ओके का उपयोग करके देख सकते हैं :

http://johnearnest.github.io/ok/index.html?run=%20%2C%2F%7B(x%2C%22o%22%2Cx%3Bx)9%3E%22%20aeiouåäö%22%3Fx%7D'%22Min%20svävare%20är%20full%20med%20ål%22

(दुर्भाग्य से मैं एक क्लिक करने योग्य लिंक प्रदान नहीं कर सकता क्योंकि ढेर ओवरफ़्लो URL में उच्चारण वर्णों की अनुमति देने के लिए प्रकट नहीं होता है)


0

गोल्फस्क्रिप्ट, 35 बाइट्स

{."aeiouåäö\n "?-1={."o"\}{}if}%

स्टैक पर इनपुट की अपेक्षा करता है। इनपुट के साथ (50 बाइट्स):

"#{STDIN.gets}"{."aeiouåäö\n "?-1={."o"\}{}if}%

स्वीडिश आवाज के साथ काम करता है å, ä और ö।


2
इनपुट हमेशा जीएस पर होता है
ऑप्टिमाइज़र

0

सेड (कमांड लाइन पर), 28 बाइट्स

sed 's/\([^aeiou]\)/\1o\1/g'

या तो टेक्स्ट को पाइप करें या इसे डायरेक्ट टाइप करें। बस अपने आप पर sed कोड 22 बाइट्स है।


4
यह भी रिक्त स्थान और चार्ट की तरह नकल करता है ä
प्रोग्राम फॉक्स

0

आर, 45 वर्ण

gsub("([^aeiouäöå ])","\\1o\\1",readline(),i=T)

सरल रीगेक्स। स्टड से पढ़ता है। i=Tके लिए खड़ा है ignore.case=TRUE(तर्क नामों के आंशिक मिलान के लिए धन्यवाद), जो gsubमामले को असंवेदनशील बनाता है।

उपयोग:

> gsub("([^aeiouäöå ])","\\1o\\1",readline(),i=T)
Min svävare är full med ål
[1] "MoMinon sosvovävovarore äror fofulollol momedod ålol"
> gsub("([^aeiouäöå ])","\\1o\\1",readline(),i=T)
hello
[1] "hohelollolo"
> gsub("([^aeiouäöå ])","\\1o\\1",readline(),i=T)
hElLo
[1] "hohElolLoLo"


0

गोल्फलुआ, 36 बाइट्स

B=I.r():g("[^aeiou%W ]","%1o%1")w(B)

सरल पैटर्न-मिलान: स्टड लें, फिर गैर-स्वरों का पता लगाएं ( %Wगैर-अल्फ़ान्यूमेरिक वर्णों का ध्यान रखें) और oदो प्रतिस्थापनों के बीच डालें । अफसोस की बात है, यह सब लिखने के भीतर (यानी, w(I.r():g(....))) भी सम्मिलन की गिनती का उत्पादन करता है, हालांकि इसने 3 वर्णों को बचाया। एक लुआ समकक्ष होगा

line = io.read()
rovar = line:gsub("[^aeiou%W ]","%1o%1")
print(rovar)

0

आरईएक्सएक्स, 107 बाइट्स

parse arg s
v='aeiouåäö '
o=
do until s=''
  parse var s l 2 s
  if verify(l,v)>0 then l=l'o'l
  o=o||l
  end
say o

"MoMinon sosvovävovarore äror fofulollol Momedod ålol"


0

जावास्क्रिप्ट 43

फ़ंक्शन सिंटैक्स पर सहेजने के लिए @Masterzagh का धन्यवाद।

x=>x.replace(/[bcdfghj-np-tv-z]/gi,"$&o$&")

जावास्क्रिप्ट 62

function E(x){return x.replace(/[bcdfghj-np-tv-z]/gi,"$&o$&")}

आपका फ़ंक्शन अनाम तीर फ़ंक्शन की तरह हो सकता है x=>x.replace(/[bcdfghj-np-tv-z]/gi,"$&o$&")। एरो फ़ंक्शंस इस तरह काम करते हैं name=(arg1, arg2)=>{code}()जरूरत नहीं है अगर केवल एक तर्क है और {}जरूरत नहीं है अगर कोड की केवल एक पंक्ति है। अगर एक लाइन में कुछ लौटता है तो रिटर्न की भी जरूरत नहीं है।

और मैं कहना भूल गया। आपको इसे समस्या को हल करने के लिए एक नाम देने की आवश्यकता नहीं है जो केवल आपको एक फ़ंक्शन बनाने के लिए कहा है।


0

हास्केल, 75 बाइट्स

x n|elem n[x|x<-['B'..'z'],notElem x"EIOUaeiou"]=[n,'o',n]|1<2=[n]
f=(>>=x)

यह नीमी के उत्तर पर एक मामूली सुधार है (दुर्भाग्य से मैं अभी तक टिप्पणी नहीं कर सकता) जो [x|x<-['B'..'z'],notElem x"EIOUaeiou"]कि व्यंजन की सूची उत्पन्न करने के लिए "चतुर" तरीके का उपयोग करता है ( ) जो कि 6 बाइट्स को केवल उन्हें सूचीबद्ध करने से बचाता है।

इस मामले में ['B'..'z']विस्तार करने के लिए "BCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz"

हालांकि कुछ गैर-अक्षर वर्ण व्यंजन की सूची में शामिल हैं, इनमें कोई विराम चिह्न या स्थान शामिल नहीं है, इसलिए इसे किसी भी नियमित वाक्य के लिए काम करना चाहिए।

उपयोग: f "Hello there!"-> "HoHelollolo tothoherore!"

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