স্মরণে তেওঁ স্বরলি!


25

ইনপুট

মুদ্রণযোগ্য ASCII অক্ষরের একটি স্ট্রিং, উদাহরণস্বরূপ:

This is an example string.

আউটপুট

BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyzস্বর দ্বারা অনুসরণ করা হয় না এমন প্রতিটি ব্যঞ্জনবর্ণের জন্য ( ) তার AEIOUaeiouআগে সর্বশেষ স্বরটি ছোট হাতের অক্ষরে যুক্ত করুন।
প্রথম স্বরবর্ণের আগে ব্যঞ্জনবর্ণগুলি যেমন রয়েছে তেমন :

Thisi isi ana examapale seterinigi.

পরীক্ষার মামলা

AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
=> ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)

And here comes a **TEST** case with 10% symbols/numbers(#)!
=> Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!

This is an example string.
=> Thisi isi ana examapale seterinigi.

abcdefghijklmnopqrstuvwxyz
=> abacadefegehijikiliminopoqorosotuvuwuxuyuzu

A pnm bnn
=> A panama banana

Tell me if you need more test cases!
=> Telele me ifi you neede more tesete casese!

স্কোরিং

যেহেতু এটি , প্রতিটি ভাষার মধ্যে সর্বনিম্ন বাইট-গণনা সহ উত্তর (কোনও উত্তর গৃহীত হবে না)।


সুতরাং, theোকানো স্বরগুলি সর্বদা ছোট হাতের হওয়া উচিত, যখন পাঠ্যটি বড়হস্ত এবং ছোট হাতের উভয়ই হতে পারে?
এরিক আউটগল্ফার

আউটপুট একটি তালিকা / অ্যারে আকারে হতে পারে?
নাথান ডিমার

@EriktheOutgolfer হ্যাঁ, আমি বড়হাতের চাইনি যেখানে আমরা ছোট হাতের অক্ষরে প্রয়োজন, কিন্তু এটা চ্যালেঞ্জ overcomplicated যেত যদি এক সংলগ্ন বর্ণের কেস চেক করতে হয়েছে
wastl

11
স্বাস্থ্যকর বাচ্চাদের খান, চেষ্টা করুন A pnm bnn!
স্টিভি গ্রিফিন

4
অন্য কেউ কি ভাবেন যে "হাউস ইতালিরা" কোথাও কোথাও শিরোনামে যেতে হবে?
আর্টিলিয়াস

উত্তর:


14

রেটিনা , 48 বাইট

i`(?<=([aeiou]).*?[^\W\d_aeiou])(?![aeiou])
$l$1

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: বর্ণবাদী একটি স্বর দ্বারা অনুসরণ না করে একটি বিন্দু অনুসন্ধান করে, যখন নজরদারি তত্ক্ষণাত্ পূর্ববর্তী ব্যঞ্জনবর্ণ এবং পূর্বের স্বরবর্ণ অনুসন্ধান করে, যা নীচের ক্ষেত্রে isোকানো হয়।


8

জাভাস্ক্রিপ্ট (ES6), 108 105 বাইট

(@ শেগগিকে ধন্যবাদ 3 বাইট সংরক্ষণ করা হয়েছে।)

f=s=>(t=(s+=' ').replace(/[aeiou]|[a-z][^aeiou]/ig,r=>r[1]?r[0]+v.toLowerCase()+r[1]:v=r,v=''))!=s?f(t):s

স্বর বা ব্যঞ্জনবর্ণের জন্য নীচে স্বরযুক্ত অনুসন্ধানগুলি :

/[aeiou]|[a-z][^aeiou]/ig

(আমাদের স্বতন্ত্রভাবে ব্যঞ্জনবস্তুগুলির সন্ধান করার দরকার নেই, কারণ স্বরগুলির উপর ভিত্তি করে স্বরগুলি বাদ দেওয়া হয়েছে /[aeiou]|...))

স্বরগুলি সংরক্ষণ করা হয় v, এবং নিম্নলিখিত স্বরযুক্ত ব্যঞ্জনবর্ণগুলি sertedোকানো হয়নি v:

r[1]?r[0]+v.toLowerCase()+r[1]:v=r

(যদি r[1]বিদ্যমান থাকে তবে আমরা একটি ব্যঞ্জনবর্ণের সাথে স্ব-স্বরটির সাথে মিল রেখেছি))

যদি কিছু পরিবর্তন না করা হয়, আমরা ইনপুটটি ফিরিয়ে দেব। অন্যথায়, আমরা প্রতিস্থাপন স্ট্রিং উপর পুনরাবৃত্তি।


1
এটি আরও ভাল। আমার সত্যিই রেজেক্সটি দেখার দরকার
লুইস ফিলিপ দে জেসুস মুনোজ

ওভার মানচিত্র + যোগ দিন ব্যবহার করার জন্য +1 স্মার্ট ধারণা
ডাউনওয়েট

s=>s.replace(/[aeiou][^a-z]*([a-z](?![aeiou]))+/gi,s=>s.replace(/(?!^)./g,a=>a+s[0].toLowerCase()))
রিকার্সন

পুনরাবৃত্তি অবশ্যই এখানে জিনিসগুলিকে সরল করে।
রিক হিচকক

(s+=' ')কয়েক বাইট সংরক্ষণ করা উচিত।
শেগি

5

পাইথন 2 , 134 119 বাইট

def f(s,v=''):u=s[:1];return s and u+v*(u.isalpha()-g(u)-g((s+u)[1]))+f(s[1:],[v,u.lower()][g(u)])
g='aeiouAEIOU'.count

এটি অনলাইন চেষ্টা করুন!

সম্পাদনা: লিনের 15 বাইট থেক্স x


আমি এটি 119 বাইট জন্য একটি সামান্য fiddled ।
লিন

@Lynn: প্রেমের <vowels>.count
চ্যাস ব্রাউন

4

স্ট্যান্ডার্ড এমএল , 225 223 বাইট

str o Char.toLower;fun?c=String.isSubstring(it c)"aeiou"fun g(x,l)$d=(fn l=>if Char.isAlpha$andalso not(?d)then if? $then(it$,l)else(x,l^x)else(x,l))(l^str$)fun f$(c::d::r)=f(g$c d)(d::r)|f$[c]= #2(g$c c);f("","")o explode;

এটি অনলাইন চেষ্টা করুন!

কম গল্ফড:

val lower = str o Char.toLower

fun isVowel c = String.isSubstring (lower c) "aeiou"

(* c is the current char, d is the next char, x is the last vowel and l the accumulator 
   for the resulting string *)
fun g (x,l) c d = 
    if Char.isAlpha c andalso not (isVowel d)
    then if isVowel c 
         then (lower c, l^str c)
         else (x, l^str c^x)
    else (x, l^str c)

fun f t (c::d::r) = f (g t c d) (d::r)
  | f t [c] = #2(g t c #"d")

val h = f ("","") o explode;

এটি অনলাইন চেষ্টা করুন!


বাহ, এমএল গল্ফ দেখতে সত্যিই আকর্ষণীয়! আমি ভালবাসি itএবং $পরিবর্তনশীল নামের ব্যবহার ।
লিন

@ লিন আমি কিছু সময় আগে সনাক্তকারী নাম বদলে দেওয়ার বিষয়ে একটি টিপ লিখেছিলাম এবং itপাশাপাশি সে সম্পর্কে একটি লেখার পরিকল্পনাও করেছি, তবে এখনও তা করতে পারিনি।
লাইকনি

4

সেড 4.2.2 , 64 বাইট

:
s/(([aeiou])[^a-z]*[b-df-hj-np-tv-z])([^aeiou]|$)/\1\l\2\3/I
t

এটি অনলাইন চেষ্টা করুন!


আমি সত্যবাদী হব, এখানে আমার লক্ষ্যটি কেবল কয়েকটা বাইট দ্বারা পার্লকে হারাতে চেষ্টা করা। আসুন এটি দেখতে দিন :)
কার্নেলপ্যানিক

4

পার্ল 5, 68 67 59 বাইট

perl -pe '$v="[aeiou])";1while s/($v[^a-z]*[b-z]\K(?<!$v(?!$v/\L$1/i'

এখানে এর দরকারীতার একটি দুর্দান্ত উদাহরণ রয়েছে \Kএবং আমি বিশ্বাস করতে পারি না যে ডোম হেস্টিংস এটি নির্দেশ করার আগে আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম না।

আমি কেবল ব্যবহার করে সঠিক আচরণ করতে সক্ষম হইনি s///g, সুতরাং একটি আসল লুপটি প্রয়োজনীয় বলে মনে হচ্ছে। (এটি সম্ভবত সম্ভব যে পিছনের দৃশ্যের সঠিক ব্যবহারটি স্পষ্ট ছাড়াই কাজ করতে পারে while- তবে আমি এটি খুঁজে পাইনি))


চমৎকার পন্থা! আরও ভাল কিছু নিয়ে আসতে সক্ষম হয় নি, তবে 6 বাইট ছাড়তে পেরেছি: অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

1
@ ডোমহাস্টিংস: এমনকি স্বল্প (58 বাইটে নিচে) [aeiou])পরিবর্তনশীলকে ফ্যাক্টর করে : অনলাইনে চেষ্টা করে দেখুন!
শ্যাডোর্যাঞ্জার

3

জাভাস্ক্রিপ্ট ES6, 115 বাইট

8 ইট প্রডাকশনগুলিতে ধন্যবাদ 8 বাইট সংরক্ষণ করুন

s=>[x="",...s].map((i,j)=>(r=/[aeiou]/i).test(i)?x=i:/[a-z]/i.test(i)&&!r.test(s[j]||1)?i+x.toLowerCase():i).join``

আমি এটি O_o গল্ফ করার প্রক্রিয়াতে এটিকে আরও স্ফীত করতে পেরেছি তবে এটি একটি বাগও স্থির করে

s=>[x="",...s].map(             // Create a new array with x storing last vowel
                                // This also offsets indexes by one so rel to original str refers to next char
   (i,j)=>                      // Going through each char...
      (r=/[aeiou]/i).test(i)?   // If it's vowel, store it in x
          x=i:
      /[a-z]/i.test(i)          // If a letter (thats not a vowel excluded by above)
         &&!r.test(s[j]||1)?    // Test if next char is *not* vowel
         i+x.toLowerCase():i    // If it isn't, then add the most recent vowel after
    ).join``                    // Combine back to string

@ রিকহিচকক ওহ শুট পুরোপুরি শেষ হওয়া সম্পর্কে ভুলে গেছে, ঠিক
ততক্ষণ

1
@ রিকহিচকক ঠিক আছে
ডাউনগোট

আহ, হ্যাঁ, গল্ফের জন্য ধন্যবাদ
ETH

3

জাভাস্ক্রিপ্ট, 88 82 বাইট

একক নিয়মিত অভিব্যক্তি সম্পন্ন:

আসল সংস্করণ (৮৮ বাইট):

s=>s.replace(/(?<=([aeiou]).*?(?![aeiou])[a-z])(?=[^aeiou]|$)/gi,(_,c)=>c.toLowerCase())

নীলের নিয়মিত অভিব্যক্তিটি দেখার পরে আপডেট সংস্করণ (৮২ বাইট) :

s=>s.replace(/(?<=([aeiou]).*?[^\W\d_aeiou])(?![aeiou])/gi,(_,c)=>c.toLowerCase())

var tests = {
  "AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)":
    "ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)",
  "And here comes a **TEST** case with 10% symbols/numbers(#)!":
    "Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!",
  "This is an example string.":
     "Thisi isi ana examapale seterinigi.",
  "abcdefghijklmnopqrstuvwxyz":
    "abacadefegehijikiliminopoqorosotuvuwuxuyuzu",
  "A pnm bnn":
     "A panama banana",
  "Tell me if you need more test cases!":
     "Telele me ifi you neede more tesete casese!"
};

for ( test in tests )
{
  var result = (s=>s.replace(/(?<=([aeiou]).*?[^\W\d_aeiou])(?![aeiou])/gi,(_,c)=>c.toLowerCase()))(test);
  console.log( result === tests[test], result );
}


3

জাপট -P , 28 বাইট

ó@\ctX ©\VtYÃËè\v ?P=D:D¬qPv

এটি অনলাইন চেষ্টা করুন!

আনপ্যাকড এবং কীভাবে এটি কাজ করে

UóXY{\ctX &&\VtY} mD{Dè\v ?P=D:Dq qPv

UóXY{           }  Split the string between any two chars that don't satisfy...
     \ctX &&\VtY     The first char is a consonant and the second is a non-vowel
mD{                And map...
   Dè\v              If this item is a vowel...
       ?P=D            Assign it to P and return as-is
           :Dq qPv     Otherwise, split the item into chars and join with P lowercased
                       (P starts with "", so beginning consonants are not affected)

-P                 Join with ""

óফাংশন regexes যে কোন ধরণের উপর ধিক্কার জানাই।


খুব ভাল, ইয়া আমাকে মারল: ডি।
ম্যাজিক অক্টোপাস উরন

সুন্দরভাবে সম্পন্ন - আমি এই এক সঙ্গে নিজেকে গুরুতর মস্তিষ্কের ব্যথা দিয়েছি!
শেগি


2

পার্ল 6 ,  75 73 71  69 বাইট

{({S:i/.*(<[aeiou]>).*<-[\W\d_aeiou]><()><![aeiou]>/$0.lc()/}...*eq*).tail}

চেষ্টা করে দেখুন

{({S:i{.*(<[aeiou]>).*<-[\W\d_aeiou]><()><![aeiou]>}=$0.lc}...*eq*).tail}

চেষ্টা করে দেখুন

{({S:i{.*(<[aeiou]>).*<:L-[_aeiou]><()><![aeiou]>}=$0.lc}...*eq*).tail}

চেষ্টা করে দেখুন

{({S:i{.*(<[aeiou]>).*<:L-[_aeiou]><(<![aeiou]>}=$0.lc}...*eq*).tail}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with implicit parameter $_

  (
    # generate a sequence

    {  # code block used to generate the values

      S               # substitute (not in-place)
      :i              # :ignorecase
      {

          .*              # start at end of string

          ( <[aeiou]> )   # store the previous vowel in $0

          .*

          <:L - [_aeiou]> # letter other than a vowel

          <(              # ignore everything before this

                          # this is where `$0.lc` gets inserted

          # )>            # ignore everything after this

          <![aeiou]>      # not a vowel (zero width lookahead)

      } = $0.lc       # replace with lowercase of the earlier vowel
    }

    ...    # keep generating until:

    * eq * # there are two equal strings (no changes)

  ).tail   # get the last value
}

2

পাইথন 3 , 125 বাইট

lambda s,v='[^aeiouAEIOU':sub(f'(?<={v}\W\d])(?={v}]|$)',lambda m:sub(f'{v}]','',s[:m.end()])[-1:].lower(),s)
from re import*

এটি অনলাইন চেষ্টা করুন!

পাইথন 3.6 (AB) ব্যবহার করতে পারবেন F-স্ট্রিং (এবং আরো চার অক্ষরের জন্য সংরক্ষিত, একটি উল্টানো Regex চরিত্র বর্গ শুরুতে) সস্তায় (ক স্বরবর্ণ আমাদের সেট পুনরায় ব্যবহার করার জন্য fপ্রতিটি স্ট্রিং উপর উপসর্গ, তারপর {v}প্রয়োজন হিসাবে, পরিবর্তে '+v+'আপনার কনট্যাক্টেশন বা [^aeiouAEIOUশাব্দিকভাবে প্রবেশ করানো দরকার।

যে রেজেক্সটি কোনও অক্ষর, কেবল একটি অবস্থানের সাথে মেলে না, অ-ওভারল্যাপিংয়ের সাথে মেলে এমন সাধারণ সমস্যাগুলি এড়িয়ে যায় যা সাধারণ রেজেক্সগুলির প্রয়োজন হয়, এবং ম্যাচের কোনও অংশের পিছনে থাকা প্রয়োজনটিকে সরিয়ে দেয়; আমরা ম্যাচ অবজেক্টটি যা ব্যবহার করি তা হ'ল পূর্বের স্বরটি সন্ধান করতে আমরা যে স্লাইস সূচকটি ব্যবহার করি তা পাওয়া।

আংশিকভাবে ডি-গল্ফড, এটি এমন কিছু হবে:

import re

def get_last_vowel(string):
    '''
    Returns the lowercase version of the last vowel in a string if
    the string contains any vowels, otherwise, return the empty string
    '''
    try:
        *restvowels, lastvowel = re.sub(r'[^aeiouAEIOU]', '', string)
    except ValueError:
        lastvowel = ''  # No vowels in string
    return lastvowel.lower()

def rememebere_tehe_vowelese(string):
    '''Inserts the lowercased last vowel seen after any consonant not followed by a vowel'''
    return re.sub(r'(?<=[^aeiouAEIOU\W\d])(?=[^aeiouAEIOU]|$)',
                  lambda match: get_last_vowel(string[:match.end()]),
                  string)

2

টিএসকিউএল, 500 বাইট

 CREATE TABLE i (i CHAR(999)); INSERT i VALUES ('The rain in Spain stays mainly in the plain')
 DECLARE @w CHAR(999)=(SELECT i FROM i),@r VARCHAR(999)='';WITH d(n,c,i,q)AS(SELECT n,SUBSTRING(@w,n,1),CHARINDEX(SUBSTRING(@w,n,1),'AEIOUaeiou'),CHARINDEX(SUBSTRING(@w,n,1),'BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz')FROM(SELECT DISTINCT number n FROM master..[spt_values]WHERE number BETWEEN 1 AND LEN(@w))D)SELECT @r=@r+f.c+LOWER(COALESCE(CASE WHEN f.q<>0 AND COALESCE(d2.i,0)=0 THEN SUBSTRING(@w,(SELECT MAX(n)FROM d WHERE i<>0 AND n<f.n),1)END,''))FROM d f LEFT JOIN d d2 ON f.n=d2.n-1 SELECT @r

সারণী ইনপুটi জন্য ব্যবহৃত হয়


2
নির্দিষ্ট ভেরিয়েবলের উপস্থিতি ইনপুট ধরে নেওয়া সাধারণত অনুমোদিত নয় । এর পরিবর্তে কোনও ফাংশন হিসাবে রূপান্তর করা যায়?
Laikoni

@ লাইকনি সমাধান প্রদত্ত নিয়মের সাথে মেলে আপডেট হয়েছে
জান ড্রোজেন

2

এসডাব্লুআই-প্রোলগ, 593 বাইট

a(S,D):-atom_chars(S,D).
g(_,[],_,-1).
g(E,[E|_],R,R).
g(E,[_|T],I,R):-N is I+1,g(E,T,N,R).
c(A,E):-g(E,A,0,R),R > -1.
v(X):-a('AEIOUaeiou',X).
c(X):-a('BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz',X).
d([_],_,R,R).
d([H|T],_,I,R):-v(V),c(V,H),!,d(T,H,I,[H|R]).
d([H,N|T],V,I,R):-c(C),c(C,H),v(W),c(W,N),!,d([N|T],V,I,[H|R]).
d([H,N|T],V,I,R):-c(C),c(C,H),v(W),\+c(W,N),string_lower(V,LV),!,d([N|T],V,I,[LV,H|R]).
d([H|T],V,I,R):-!,d(T,V,I,[H|R]).
r([],Z,Z).
r([H|T],Z,A):-r(T,Z,[H|A]).
r(S,D):-r(S,D,[]).
m(X,R):-a(X,O),r(O,P),r([''|P],Q),d(Q,'',I,[]),r(I,J,[]),atomic_list_concat(J,R).

কেবল অন্তর্নির্মিত পূর্বাভাস (রিজেক্স বা তালিকা ম্যানিপুলেটিং লাইব্রেরি ছাড়াই) ব্যবহৃত হয়।

ব্যবহার:

?- m('A pnm bnn').
'A panama banana'
true .

2

হাস্কেল , 142 130 বাইট

""&
import Data.Char
v=(`elem`"aeiouAEIOU")
s&(x:y:z)|v y=x:s&(y:z)
s&(x:y)|v x=x:[toLower x]&y|isAlpha x=x:s++s&y|1>0=x:s&y
_&x=x

এটি অনলাইন চেষ্টা করুন!

প্রাথমিকটি ফাংশনটির ""&আংশিক অ্যাপ্লিকেশন যা (&)পরে সংজ্ঞায়িত করা হয়, এবং টিআইওকে বাইটগুলি গণনা করার জন্য এতটা অদ্ভুতভাবে স্থাপন করা হয় ""&তবে কোনও বাইটসকে গণনা করা হয় না যে একটি সম্পূর্ণ প্রোগ্রামে এটি কোনও নামযুক্ত মানকে নির্ধারিত করতে হবে।


কম গল্ফড:

import Data.Char (isAlpha, toLower)

vowel :: Char -> Bool
vowel = (`elem`"aeiouAEIOU")

replace :: String -> String
replace = go "" -- start by carrying no extra vowel
  where go _ "" = ""
        -- special case for "anything followed by vowel" so later cases can ignore next character
        go s (x:y:more) | vowel y = x : go s (y:more)
        go s (x:xs) | vowel x = x : go [toLower x] xs -- update the vowel we're carrying
                    | isAlpha x = x : s ++ go s xs -- non-vowel letter not followed by a vowel
                    | otherwise = x : go s xs -- some non-letter junk, just include it and carry on

এটি পুনরাবৃত্তির পরিবর্তে ভাঁজ দিয়ে আরও সংক্ষিপ্তভাবে করার একটি উপায় হওয়া উচিত, তবে আমি এটি বুঝতে পারি না।


শিরোনামকে fশরীরে প্রদর্শিত না হয় এমন একটি শিরোনামকে সংজ্ঞায়িত করার খুব হ্যাকি উপায় : এটি অনলাইনে চেষ্টা করে দেখুন!
লাইকনি

দুটি অপ্রয়োজনীয় স্পেস রয়েছে v = (এবং আপনি ইনফিক্স অপারেটরg হিসাবে সংজ্ঞা দিতে পারেন ।
লাইকনি

বেস কেসটিকে g _""=""শেষ অবস্থানে রেখে g _ x=xদিলে একটি বাইট সাশ্রয় হয়: (লাইকোনি যেমন বলে আপনি ইনফিক্সে স্যুইচ করেন তবে দুটি বাইট)।
নিমি

আমাদের কনভেনশনগুলি অনুসারে ""&এটিকে একটি ক্রিয়াকলাপ করতে আপনার চারপাশে প্রথম বন্ধন যুক্ত করতে হবে।
লাইকনি

1

05 এ বি 1 ই , 34 বাইট

vyžMylåil©1V}žPylåžM¹N>èå_Y&&i®«}J

এটি অনলাইন চেষ্টা করুন!


আমি এটি ফিরিয়ে নিয়েছি আমি এই একতাবাদ থেকে মাত্র 3 বাইট শেভ করতে পারি ... আমার মনে হয় আমি বুলিয়ানটি শেভ করতে পারতাম, তবে 3 টি ক্ষেত্রে অবশ্যই হওয়া উচিত। স্বর জন্য 1। ব্যঞ্জনবর্ণের জন্য 1। 1 ডিজিট / চিহ্নের উপস্থিতির জন্য।


v                                 # For each...
 y                                # Push current element.
  žM                              # Push lower-case vowels (aeiou).
    ylå                           # Lower-case current element is vowel?
       i©1V}                      # If so, put it in register, set Y to 1.
            žP                    # Push lower-case consonants (b...z)
              ylå                 # Is current char a consonant?
                 žM¹N>èå_         # Push vowels again, is input[N+1] NOT a vowel? 
                         Y        # Did we ever set Y as 1?
                          &&      # All 3 previous conditions true?
                            i®«}  # Concat the current vowel to the current char.
                                J # Join the whole stack.
                                  # '}' isn't needed here, b/c it's implied.
                                  # Implicit return.

0

পাওয়ারশেল, 104 বাইট

নীলের নিয়মিত প্রকাশের ভিত্তিতে ।

[regex]::Replace($args,'(?i)(?<=([aeiou]).*?[^\W\d_aeiou])(?![aeiou])',{"$($args.Groups[1])".ToLower()})

এটি হিসাবে সংরক্ষণ করুন get-rememebere.ps1। পরীক্ষার জন্য স্ক্রিপ্ট:

$test = @"
AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
And here comes a **TEST** case with 10% symbols/numbers(#)!
This is an example string.
abcdefghijklmnopqrstuvwxyz
A pnm bnn
Tell me if you need more test cases!
"@

$expected = @"
ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)
Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!
Thisi isi ana examapale seterinigi.
abacadefegehijikiliminopoqorosotuvuwuxuyuzu
A panama banana
Telele me ifi you neede more tesete casese!
"@

$result = .\get-rememebere.ps1 $test
$result -eq $expected
$result

1
এটি কি কেবল স্নিপেট নয়? মানে, পাওয়ারশেলের ইনপুট রয়েছে, সুতরাং আপনি অনুমান করতে পারবেন না যে ইনপুট রয়েছে $t। প্রাসঙ্গিক মেটা পোস্ট: কোড golf.meta.stackexchange.com/a/8731/78123
wastl

0

লাল , 276 বাইট

func[s][v: charset t:"AEIOUaeiou"c: charset 
u:"BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz"b:
parse s[collect[any keep[thru c opt v]keep thru end]]p:""foreach
c b[either find t e: last c: to-string c[p: e][parse c[any[copy p v
| skip]]if find u e[append c lowercase p]]prin c]]

এটি অনলাইন চেষ্টা করুন!

রিডেবল:

f: func [ s ] [
   v: charset t: "AEIOUaeiou"
   c: charset u: "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz"
   b: parse s [
       collect [ any keep [ thru c opt v ]
       keep thru end ]
   ]
   p: "" 
   foreach c b [
       e: last c: to-string c
       either find t e [ p: e ][
           parse c [ any [ copy p v | skip ] ]
           if find u e [ append c lowercase p ]
       ]
       prin c
   ]
]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.