ব্যঞ্জনবর্ণ বিপরীত


42

প্রোগ্রামটির স্বর ক্রমটি রেখে, ইনপুট হিসাবে একটি স্ট্রিং নেওয়া উচিত এবং এতে ব্যঞ্জনবর্ণগুলি উল্টানো উচিত। সমস্ত অক্ষর ছোট হাতের হবে, তাই আপনি কেসিং সম্পর্কে চিন্তা করতে হবে না। উদাহরণ অনুসরণ করুন।

  1. ইনপুট: a test case
    এখানে ব্যঞ্জনবর্ণ হয় t,s,t,c,s। তারা বিপরীত আদেশ, অর্থাৎ আসা উচিত s,c,t,s,t: এবং একই অবস্থানের যেখানে প্রাক বিপরীত অক্ষর অবস্থিত ছিল স্ট্রিং ঢোকানো ফিরে a sect sate

  2. ইনপুট: well-done। আউটপুট: nedl-lowe

  3. ইনপুট: reverse the consonants। আউটপুট: setenne sne cohtosarvr

এটি কোড গল্ফ, সংক্ষিপ্ত সমাধান জেতে।

Y এগুলি কি উল্টে না হয় তা নির্বিশেষে স্বর হিসাবে বিবেচনা করা উচিত।

কিছু, পাশাপাশি সংখ্যা, বিরামচিহ্ন, উদ্ধৃতি এবং অন্যান্য চিহ্ন ( @#$%^&*(){}[]\|/<>~-_+=`) সম্ভাব্যভাবে ইনপুটটিতে উপস্থিত হতে পারে।

উত্তর:


16

রেটিনা, 22 21 20 17

O#^`[b-z-[eiouy]]

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

1 লাইট নুনকে ধন্যবাদ!

মার্টিনকে 4 বাইট ধন্যবাদ!

Oঅর্থ বাছাই করা, এবং #সংখ্যার মান অনুসারে বাছাই করার অর্থ। যেহেতু মিলেছে না এমন কোনও অক্ষরের কোনও সংখ্যাসূচক মান থাকবে না, সমস্ত বর্ণের একই ওজন থাকে: ০. ^মানে বাছাই করা মানগুলির ক্রমকে বিপরীত করা, যা স্থিতিশীল বাছাইয়ের জন্য ধন্যবাদ মানে মানগুলি বিপরীত হয়।

-[...]মানে বাইরের চরিত্র শ্রেণী এবং এই ভেতরের শ্রেণীর মধ্যে setwise পার্থক্য না। এটি .NET এর অংশ এবং আপনি এমএসডিএন আরও পড়তে পারেন ।


খুব সুন্দর. কি -[...]অক্ষিপট নির্দিষ্ট, বা .net regexes নির্দিষ্ট বা এটি একটি সাধারণ Regex বৈশিষ্ট্য যে, আমি এখন পর্যন্ত উপেক্ষিত করেছি?
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা এই সিনট্যাক্সটি সহ আমি মনে করি এটি নেট। এর সাথে নির্দিষ্ট। অন্যান্য স্বাদেও অক্ষর শ্রেণি ছেদ থাকে তবে আমি মনে করি বাক্যটি সাধারণত হয় [...&&[^...]]
মার্টিন ইন্ডার

@ মার্টিনএন্ডার আমাকে সেড এবং গ্রেপ দিয়ে চেষ্টা করতে হবে। অসম্পূর্ণভাবে সেড এটি রয়েছে তবে সম্ভবত পিসিআরই-মোড গ্রেপ।
ডিজিটাল ট্রমা

1
পার্ল 6 টি ব্যবহার করতে <[b..z] - [eiouy]>বা <:Ll - [aeiouy]>সেট করতে পার্থক্য করতে
ব্র্যাড গিলবার্ট বি 2 গিল

15

পাইথন 2, 86 বাইট

s='';c=()
for x in input():b='{'>x not in'aeiouy'<x;s+=b*'%s'or x;c=(x,)*b+c
print s%c

উদ্ধৃতিতে একটি স্ট্রিং হিসাবে ইনপুট নেয়। ইনপুট মাধ্যমে iterates, সঙ্গে প্রতিটি ব্যঞ্জনবর্ণ প্রতিস্থাপন %sমধ্যে s। টিপল cবিপরীত ক্রমে সম্মুখীন ব্যঞ্জনবস্তু সংরক্ষণ করে। তারপর, স্ট্রিং প্রতিস্থাপিত বিন্যাস %s's sমধ্যে ব্যঞ্জনবর্ণ সঙ্গে c

ব্যঞ্জনাত্মক চেকের জন্য Sp3000 ধন্যবাদ, যা ব্যঞ্জনবর্ণের তালিকায় 4 বাইট সংরক্ষণ করেছিল।


1
এটি কোড গল্ফের একটি সুন্দর বিট :)
লিন

সত্যিই মার্জিত এবং আশ্চর্যজনকভাবে সংক্ষিপ্ত, এটি হলেন পাইথন
ডেভিল অ্যাপল 227

9

জেলি , 22 20 বাইট

Øaḟ“<1Ṛż»
e€¢œpżf¢Ṛ$

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

কিভাবে এটা কাজ করে

Øaḟ“<1Ṛż»   Helper link. No arguments.

Øa          Yield the lowercase alphabet/
   “<1Ṛż»   Decompress that string, yielding "oui aye".
  ḟ         Filter; remove the characters from the right string from the left one.


e€¢œpżf¢Ṛ$  Main link. Argument: s (string)

  ¢         Call the helper link, yielding the string of all consonants.
e€          Test each character of s for membership.
   œp       Partition s at members/consonants.
         $  Combine the three links to the left into a monadic chain.
      f¢    Filter by presence in the consonant string.
        Ṛ   Reverse the result.
     ż      Zipwith; interleave chunks of non-consonants and reversed consonants.

6

জাভাস্ক্রিপ্ট ES6, 82 81 80 78 বাইট

মার্টিন এবং লিকি নুনের প্রত্যেককে একটি বাইট এবং নীলকে 2 বাইট সংরক্ষণ করে!

a=>a.replace(r=/(?[_aeiouy])\w/g,e=>[...a].reverse().join``.match(r)[i++],i=0)

পরীক্ষামূলক

f=
a=>a.replace(r=/(?![aeiouy])[a-z]/g,e=>[...a].reverse().join``.match(r)[i++],i=0)
;
q.onchange=q.onkeydown=q.onkeyup=function(){
  o.innerHTML = "";
  o.appendChild(document.createTextNode(f(q.value)));
}
*{font-family:Consolas,monospace;}
<input autocomplete="off" id=q>
<div id=o></div>


1
এটি ফাংশন যুক্তিগুলির আরও খারাপ ব্যবহার।
লিকি নুন

/(?![aeiouy])[a-z]/g
লিকি নুন

চান /(?[_aeiouy])\w/gকাজ করে?
নীল

@ নীল নো, এটি মিলবে _, এটি একটি প্রতীক যা ওপি জায়গায় রাখতে চায়।
কনর ও'ব্রায়ান

1
আপনার ডেমোতে, আপনি q.onchange=q.onkeydown=q.onkeyup=ঠিক বদলে যেতে পারেন q.oninput=...
প্যাট্রিক রবার্টস

5

পাইথন 2, 106 বাইট

s=input()
b=[x for x in s if x in'bcdfghjklmnpqrstvwxz']*2
print''.join(x in b and b.pop()or x for x in s)

ইনপুট প্রত্যাশা করে "quotes", যা আমি মনে করি অনুমোদিত।


4

পাইকে, 18 বাইট

FD~c{IK_#~c{)oR@(s

এখানে চেষ্টা করুন!

অথবা নতুন সংস্করণ সহ 16 বাইট:

(পরিবর্তন করুন যদি সমস্ত স্ট্রিং আউটপুট ফেরত দেয় এবং স্ট্রিং ইনপুট থাকে, তালিকার পরিবর্তে স্ট্রিং ফেরত দেয়)

FD~c{IK_#~c{)oR@

এখানে চেষ্টা করুন!

~c ব্যঞ্জনবর্ণ ধারণ করে: bcdfghjklmnpqrstvwxz

F                - For i in input:
  ~c{I           -  if i in "bcdfghjklmnpqrstvwxz":
       _#~c{)    -    filter(reversed(input), <-- in "bcdfghjklmnpqrstvwxz")
             oR@ -   ^[o++]

4

জিএনইউ সেড, 73

-rস্কোডে সিডে পাস করা পতাকাটির জন্য +1 রয়েছে ।

:
s/([b-df-hj-np-tv-xz])(.*)([b-df-hj-np-tv-xz])/\u\3\2\u\1/
t
s/./\l&/g

Ideone।

বারবার প্রথম এবং সর্বশেষ ছোট ছোট ব্যঞ্জনবর্ণটি স্যুইচ করে এবং কোনও মিল না পাওয়া পর্যন্ত তাদের আপার ক্ষেত্রে রূপান্তর করে। তারপরে পুরো স্ট্রিংটি আবার লোয়ারকেসে রূপান্তর করুন।


4

জে, 53 বাইট

C.~[:~.<@~.@/:~"1@(,.|.)@I.@e.&'bcdfghjklmnpqrstvwxz'

সম্ভবত সবচেয়ে ভাল উপায় নয় তবে আমি ব্যবহার করতে চেয়েছিলাম C.যেহেতু এটি অনুমতি ব্যবহার করে সমাধান করা যেতে পারে।

ব্যবহার

   f =: C.~[:~.<@~.@/:~"1@(,.|.)@I.@e.&'bcdfghjklmnpqrstvwxz'
   f 'a test case'
a sect sate
   f 'well-done'
nedl-lowe
   f 'reverse the consonants'
setenne sne cohtosarvr

ব্যাখ্যা

C.~[:~.<@~.@/:~"1@(,.|.)@I.@e.&'...'  Input: s
                               '...'  The list of consonants
                            e.&'...'  Generate a boolean mask where an index is true
                                      if the char at that index in s is a consonant
                         I.@          Get a list of the true indices
                  (  |.)@             Reverse that list
                  (,.  )@             Join the original and reversed list as columns
            /:~"1@                    Sort each row of that 2d list
         ~.@                          Take the distinct values in each row
       <@                             Box them
   [:~.                               Take the distinct boxes - Now represents the
                                      permutation needed to solve this in cycle notation
C.~                                   Permute s according the cycles and return

4

এমএটিএল, 18 22 21 বাইট

tt2Y211Y2'y'hX-m)P5M(

@ লুইসকে ধন্যবাদ 1 বাইট সংরক্ষিত হয়েছে

দুর্ভাগ্যক্রমে এর দীর্ঘতম অংশটি ব্যঞ্জনবর্ণের তালিকা পাচ্ছে ( 2Y211Y2'y'hX-)।

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা

            % Implicitly grab the input
tt          % Duplicate twice
2Y2         % Grab the pre-defined list of all lower-case letters
llY2        % Grab the pre-defined list of lower-case vowels (excluding 'y')
'y'h        % Add 'y' to the list of vowels
X-          % Find the set difference between these two lists (the consonants)
m           % Create a boolean array the size of the input that is true for all consonants
)           % Use this as an index to grab all consonants
P           % Reverse the order of the consonants
5M          % Get the boolean array again
(           % Re-assign the flipped consonants with the original consonant locations
            % Implicitly dislpay the result

1 বাইট কম কম:tt2Y211Y2'y'hX-m)P5M(
লুইস মেন্ডো

@ লুইস মেন্ডো দুর্দান্ত ধারণা, ধন্যবাদ!
সোয়েভার

4

পার্ল 5 (58 + 4 = 62 বাইট)

$_=<>;$r=qr/(?![eiouy])[b-z]/;@a=/$r/g;s/$r/pop@a/ge;print

-0777পতাকা সহকারে দৌড়ানোর জন্য +4 জরিমানা , যা নিউলাইনগুলি সঠিকভাবে পরিচালনা করতে পার্লকে স্লর্প মোডে সেট করে।

STDIN এর মাধ্যমে ইনপুট গ্রহণ করে এবং STDOUT- এ প্রিন্ট করে।

ব্যাখ্যা

                   $_=<>;   Read the input
 $r=qr/(?![eiouy])[b-z]/;   Save the regex; we'll be using it twice
                @a=/$r/g;   Store all the consonants in an array
           s/$r/pop@a/ge;   Replace each consonant with the final value in the array and pop
                   print    Output the result

4

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

s=>s.split(/([^\W\d_aeiouy])/).map((c,i,a)=>i&1?a[a.length+~i]:c).join``

/([^\W\d_aeiouy])/অ্যারেতে বিজোড়-সংখ্যাযুক্ত এন্ট্রিতে ব্যঞ্জনবর্ণের ফলাফলগুলিতে বিভক্ত হওয়া । তারপরে অ্যারের শেষ থেকে সমতুল্য এন্ট্রি গণনা সহ সেইসব এন্ট্রিগুলিতে স্যুইচ করা যথেষ্ট এবং একসাথে ফলাফলটিতে যোগ দিতে এটি যথেষ্ট।


সুন্দর কাজ! আমি বিচ্ছেদ সম্পর্কে ভাবি না।
কনর ও'ব্রায়ান

5
সিআইএ আপনার কোডটি অনুপ্রবেশ করেছে বলে মনে হয়।
প্যাট্রিক রবার্টস

আমি একই
রেজিএক্সপ

4

জাভাস্ক্রিপ্ট (ES6), 57 70

আশ্চর্যজনক 20% সাশ্রয় করুন thx @ নীল সংরক্ষণ করুন

পার্টিতে দেরীতে, তবে মনে হচ্ছে সমস্ত জাভাস্ক্রিপ্ট লোকেরা কিছু মিস করেছে

a=>a.replace(r=/[^\W\d_aeiouy]/g,_=>c.pop(),c=a.match(r))

পরীক্ষা

f=a=>a.replace(r=/[^\W\d_aeiouy]/g,_=>c.pop(),c=a.match(r))

function test() {
  var i=I.value
  O.textContent=f(i)
}

test()
#I { width:90% }
<input id=I oninput="test()" value="reverse the consonants."><pre id=O></pre>


@ এনিকায়েল এটি কেবল স্থানের বাইরে রয়েছে (নিটপিক!) (তবে লক্ষ্য করার জন্য ধন্যবাদ)
edc65

যেন এটি যথেষ্ট খারাপ ছিল না (আমার সমাধানের কোনও ত্রুটির কারণে) আপনি আমাকে ইতিমধ্যে প্রহার করছেন, মনে হচ্ছে এটি ব্যবহার করে আপনার 13 বাইট সংরক্ষণ করা উচিত c.pop()
নিল

@ নীল ওয়াও ধন্যবাদ যে এটি একটি বিশাল উন্নতি হয়েছে
edc65

4

পার্ল 5, 92 68 55 বাইট

সংরক্ষিত 37 ধন্যবাদ বাইট @manatwork এর সাহায্যে। ;-)

$_=<>;@b=@a=/[^\Waeiou]/g;print$_~~@b?pop@a:$_ for/./g

পার্লের @ লিন পাইথন সমাধানের একটি অনুবাদ ।


হ্যালো, এবং পিপিসিজিতে আপনাকে স্বাগতম!
NoOneIsHere

1
@ নন আইনেস এখানে দুঃখিত, পিপিসিজি কী।
মেষ

পি রোগ্রামিং পি উজ্জলস এবং সি ওড জি ওল্ফ।
NoOneIsHere

1
কিছু " g" শক্তি সেখানে সহায়তা করবে: @s=split//;@s=/./g;এবং for(@s){push@a,$_ if(/[^\Waeiou]/);}@a=/[^\Waeiou]/g;। মানে, সংশোধক m//সহ gসমস্ত ম্যাচের একটি অ্যারে ফেরত দেয়।
manatwork

1
2nd সংস্করণ বরাদ্দকরণ যোগদান করে কমে যেতে পারে: @b=@a=…। এছাড়াও forব্লক একটি একক বিবৃতি (যে ক্ষেত্রে থাকার ;পরে প্রয়োজন হয় না), আপনি বিবৃতি পরিবর্তক এবং খুচরা বিভেদক সেটিকে রুপান্তর পারে: print$_~~@b?pop@a:$_ for/./g। (ইয়েপ, দুঃখিত, মিস করেছেন: @sভেরিয়েবলের মধ্যে মান সঞ্চয় করার দরকার নেই no )
মানটওয়ার্ক

3

পাইথ, 26 25 24 23 বাইট

Si: প্রশ্ন ++, \ [JG "aeiouy" \] 3_ @ জে
জেজি "আইইউই" এসএম? @ ডিজে @ _ @ জিকিউ ~ এইচজেড <- কেবলমাত্র _ _ @ এর কারণে এটি ধরে রাখছেন
JG "aeiouy" ছাঃ @ ডিজে @@ JQ = TZ
ছাঃ @ ডিজে-জি "aeiouy" @@ JQ = TZ
ছাঃ | -dJ-জি "aeiouy" @@ JQ = TZ

পরীক্ষা স্যুট.


3

জুলিয়া, 53 বাইট

!s=s[flipud(i)]=s[i=find(c->'}'>c"aeiouy"<"$c",s)]

এটি ইনপুট হিসাবে একটি অক্ষরের অ্যারে নেয় এবং তার ব্যঞ্জনাগুলিকে স্থানে বিপরীত করে। এটি অনলাইন চেষ্টা করুন!

লোয়ারকেস ব্যঞ্জন চেকের জন্য ক্রেডিট @ Sp3000 এ যায়।

কিভাবে এটা কাজ করে

i=find(...,s)সব সূচকের উৎপাদ গুলি , যার জন্য বিধেয় ... ফেরৎ সত্য এবং এটা আপনার পরিবর্তনশীল সংরক্ষণ আমি

c->'}'>c∉"aeiouy"<"$c"তিনটি পরীক্ষা করে এবং সত্যটি যদি সমস্ত ইতিবাচক হয় তবে সত্যটি প্রদান করে

  • '}'>cচেক যদি চরিত্র সামনে আসে {

  • "aeiou"চেক যদি স্ট্রিং পরে আসে একটি

  • c∉"aeiouy"সি যে স্বর নয় তা যাচাই করে ।

অবশেষে, s[i]সব ব্যঞ্জনবর্ণ এবং উৎপাদ s[flipud(i)]=s[i]তাদের নির্ধারণ পদে গুলি যে মধ্যে বিপরীত সূচকের মিলা আমি


এটি কোন এনকোডিং ব্যবহার করে ( )?
অ্যাডম

1
দুর্ভাগ্যক্রমে ইউটিএফ -8।
ডেনিস

3

জাভা, 319 305 261 188 বাইট

এটির জন্য সহায়তার জন্য @ লিকি নুনকে ক্রেডিট :-)

char[]r(char[]s){int i=0,j=0,n=s.length;char[]o=new char[n];for(;i<n;i++){if((s[i]+"").matches("(?![eiouy])[b-z]")){o[j++]=s[i];s[i]=65;}}for(i=0;i<n;i++)if(s[i]==65)s[i]=o[--j];return s;}

পুরানো:

s(String p){int i=0,j=0;char[]s=p.toCharArray(),o=p.toCharArray();for(;i<s.length;i++){if(((s[i]+"").matches("[aeiouy @#$%^&*(){}\\[\\]\\|/\\\\<>~\\-_+=`]")))continue;o[j++]=(s[i]);s[i]='A';}for(i=0;i<s.length;i++)if(s[i]=='A')s[i]=o[--j];return new String(s);}

এখান থেকে নেওয়া অনুপ্রেরণা ❤

Ungolfed

String s(String p){
    int i = 0, j = 0;
    char[]s=p.toCharArray(),o=p.toCharArray();
    for (;i<s.length;i++) {
        if (((s[i]+"").matches("[aeiouy @#$%^&*(){}\\[\\]\\|/\\\\<>~\\-_+=`]"))) continue;
        o[j++] = (s[i]); // Store the consonant into o
        s[i] = 'A'; // Put a special character in its place
    }
    for (i=0;i<s.length;i++)
        if (s[i] == 'A') // If special character
            s[i] = o[--j]; // Put back the consonant in reverse order
    return new String(s);
}

2
আপনি 0বিশেষ চরিত্র হিসাবে ব্যবহার করতে পারেন ( nullস্ট্রিংটিতে না থাকার গ্যারান্টিযুক্ত) এবং আপনি এটি দ্বারা পরীক্ষা করতে পারেন s[i]<1(কোনও নেতিবাচক চর নেই)
Leaky Nun

আমি তোমাকে charটুকরো টুকরো করবো :)
gcampbell

3

রুবি, 53 50 বাইট

@Manatwork থেকে -3 বাইট

->s{i=0;s.gsub(r=/[^\Waeiouy_]/){s.scan(r)[i-=1]}}

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


কোড কেন অব্যবহৃত প্যারামিটারটিকে ব্লক করেছে?
manatwork

1
@ মান্যাটওয়ার্ক ঠিক আছে। রুবি আপনাকে অব্যবহৃত প্যারামিটারটি ব্লক করার কারণে আপনাকে বাদ দিতে দেবে। আপনি সেখানে তিনটি অক্ষর শেভ করতে পারেন।
সিলভিও মায়োলো

@ মান্যাটওয়ার্ক, আমি প্রথমে এটি কোনও কিছুর জন্য ব্যবহার করতে যাচ্ছিলাম, কিন্তু তখন আমি তা করি নি এবং ফলস্বরূপ এটি অপসারণ করতে ভুলে গিয়েছিলাম
মান কালি

2

পাইথন 2, 103 98 100 বাইট

import re
def r(s):a=re.split("([^\W\d_aeiouy])",s);print''.join(sum(zip(a[::2],a[-2::-2]+['']),()))

আমার জাভাস্ক্রিপ্ট উত্তর পোর্ট। সম্পাদনা করুন: @ ডেনিস to এর জন্য 5 বাইট সংরক্ষণ করা হয়েছে, যার মধ্যে আমাকে তাত্ক্ষণিকভাবে দুটি ফিক্সিং ডিজিট ব্যয় করতে হয়েছিল।


2

আর, 120 বাইট

নতুন উত্তর:

az=function(x){
y=strsplit(x, NULL)[[1]]
a=regexpr("[bc-df-hj-np-tv-z]", y)
y[a==1]=rev(y[a==1])
paste(y, collapse="")
}

x হিসাবে একটি অক্ষরের স্ট্রিং নেয়

az("reverse the consonants")
[1] "setenne sne cohtosarvr"

নীচে পুরানো প্রতিক্রিয়া (১১০ বাইট) আমার পক্ষে খারাপ ফর্ম ছিল, যা কেবল ব্যঞ্জনবর্ণগুলিকে বিপরীত করেছে:

xrev=function(x){y=rev(strsplit(x, NULL)[[1]])
paste(y[is.na(match(y, c("a", "e","i","o","u","y")))], collapse="")}

যতিচিহ্ন বিপরীত হয় কেন? আর স্বর কোথায় গেল?
নিকেল


2

এপিএলএক্স, 31 বাইট

(c/t)←⌽t/⍨c←(t←⍞)∊⎕a~'aeoiuy'
t

⎕a~'aeoiuy'স্বরবিহীন ছোট বর্ণমালা
t←⍞অক্ষর ইনপুট টি হিসাবে সঞ্চয় করে
c←()∊বুলিয়ান "ব্যঞ্জনবর্ণ?" টি বিপরীত থেকে সি
t/⍨ এক্সট্র্যাক্ট (ব্যঞ্জনবর্ণ) হিসাবে ব্যঞ্জনবর্ণগুলি ( বিপরীতগুলি ) পরিবর্তিত স্ট্রিংটি ফেরত দেয়

(c/t)←
t


1

পাইথন 2.7, 144 বাইট

def f(a):c='bcdfghjklmnpqrstvwxz';b=[x for x in list(a[::-1])if x in c];[b.insert(x,a[x])for x in range(len(a))if a[x]not in c];return''.join(b)

এটি প্রথমে ব্যঞ্জনবর্ণগুলির বিপরীত তালিকা তৈরি করে, তারপরে অন্যান্য অক্ষরগুলির প্রতিটিকে তাদের মূল সূচীতে ফিরে আসে।

আন golfed:

s = 'well-done'
reverse = list(s[::-1])
consonants = [i for i in reverse if i in 'bcdfghjklmnpqrstvwxz']

for x in range(len(s)):
    if s[x] not in 'bcdfghjklmnpqrstvwxz':
        consonants.insert(x,s[x])

print(''.join(consonants))

https://repl.it/C30O


আপনি 'bcdfghjklmnpqrstvwxz' এর জন্য একটি ভেরিয়েবল তৈরি করে এবং পরিবর্তে সেই পরিবর্তনশীলকে কল করে বাইটস সংরক্ষণ করতে পারেন
এমসিমিস্ট্রি

1

গণিত 216 বাইট

Module[{h,v,i},v=Characters["aeiouy "];h[s_]:=SortBy[Flatten[Thread/@Transpose@{v,#[[All,1]]&/@(StringPosition[s,#]&/@v)},1],Last];i[s_,{a_,n_}]:=StringInsert[s,a,n];Fold[i,StringReverse@StringReplace[#,v->""],h@#]]&

1

হাস্কেল, 157 131 বাইট

k="bcdfghjklmnpqrstvwxz";f c((r:q),s)=if c`elem`k then(q,r:s)else(r:q,c:s);f c("",s)=("",c:s);g s=snd$foldr f(filter(`elem`k)s,"")s

হালনাগাদ

@ অ্যাটলোলজিস্টের সমাধান আমাকে বুঝতে পেরেছে যে কেবল জোড়াগুলির পরিবর্তে আমার কেবল ব্যঞ্জনবর্ণের একটি তালিকা প্রয়োজন (যেহেতু আমি সঠিক ভাঁজ ব্যবহার করছি তবে এগুলি উল্টানোর দরকার নেই))

Ungolfed

consonants = "bcdfghjklmnpqrstvwxz"

-- Combining function (right fold, improved)
f :: Char -> (String, String) -> (String, String)
f c ((r:rest), s) = if c `elem` consonants then (rest, r:s) else (r:rest, c:s)
f c ("", s) = ("", c:s)

transform :: String -> String
transform s = snd $ foldr f (filter (`elem` consonants) s, "") s


main = do
    line <- getLine
    putStrLn . transform $ line

পুরাতন

c="bcdfghjklmnpqrstvwxz";n c(a@((f,t):q),s)=if c==f then(q,t:s)else(a,c:s);n c([],s)=([],c:s);g s=let z=filter(`elem`c)s in snd$foldr n(zip (reverse z)z,"")s

ব্যঞ্জনবর্ণের জোড়াগুলির একটি তালিকা তৈরি করে, তারপরে সেই তালিকাটি ব্যবহার করে প্রতিটি ব্যঞ্জনকে প্রতিস্থাপন করে স্ট্রিংয়ের মধ্য দিয়ে চলে।

কিছুটা আদিম, তবে আমি প্রথমে উত্তরগুলি না দেখিয়ে এটি বের করতে চেয়েছিলাম। :)


4
কিছু টিপস: ক) পরিবর্তে প্রহরী ব্যবহার করুন if ... then ... else। খ) fইনফিক্স অপারেটর হিসাবে আরও ভাল লেখা আছে, বলুন %। গ) কোন অভ্যন্তরীণ যুগল জন্য প্রয়োজন ()মধ্যে ((r:q),s)। ঘ) প্রতিস্থাপন ""সঙ্গে _এর 2nd লাইন f। সমস্ত (সকল kথাকার বিষয়টি মতেই একই): c%(r:q,s)|c`elem`k=(q,r:s)|1<2=(r:q,c:s);c%(_,s)=("",c:s);g s=snd$foldr(%)(filter(`elem`k)s,"")s
নিমি

1

এস-ল্যাং ,17 16 বাইট (প্রতিদ্বন্দ্বী)

একটি বাইট সংরক্ষণ করা হয়েছে কারণ এস-ল্যাংয়ের জন্য আর শেষ যুক্তির বন্ধনী প্রয়োজন নেই

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

r[(?![aeiouy])\w

আমি স্ট্রিং ম্যানিপুলেশন গল্ফিং ল্যাঙ্গুয়েজে কাজ শুরু করেছিলাম (আমি এখনই বেশ কিছুক্ষণ ধরে এটি করতে চাইছিলাম), এবং আমি ভেবেছিলাম এটি নিয়ে কাজ করার জন্য এটি মজাদার প্রশ্ন হয়ে উঠবে।

ব্যাখ্যা:

  • rপ্রদত্ত রেজেক্স অক্ষর ম্যাচারের সাথে স্ট্রিংটি বিপরীত করে (যদি কোনও রেজেক্স আর্গুমেন্ট দেওয়া না হয় তবে এটি ডিফল্ট হবে .)
  • [ এর জন্য alচ্ছিক রেজেক্স যুক্তি শুরু হয় r
  • (?![aeiouy])\w রেজেক্স যেকোন ব্যঞ্জনাত্মক চরিত্রের সাথে মেলে (দুর্ভাগ্যক্রমে জাভাস্ক্রিপ্ট অক্ষর শ্রেণি বিয়োগের অনুমতি দেয় না)
  • ]সাধারণত এর জন্য alচ্ছিক রেজেক্স আর্গুমেন্টটি rশেষ হয় তবে এটি আমাদের শেষ প্রয়োজন না কারণ এটি শেষ ফাংশন এবং শেষ যুক্তি

1

মতলব, 67 অক্ষর

একটি ইনপুট জন্য 'this is a string of- stuff.'

s=input('','s');si=regexp(s,'[b-df-hj-np-tv-xz]');s(si)=s(flip(si))

উত্পাদন করে s = ffit is a fgnirt os- ssuht.

siইনপুট স্ট্রিংতে ব্যঞ্জনবর্ণের সূচকগুলি। চূড়ান্ত বিবৃতি সেই অক্ষরগুলিকে একই অক্ষর দ্বারা প্রতিস্থাপিত করে বিপরীত ক্রমে প্রতিস্থাপন করে।


এটি ব্যতীত কোনও বিরামচিহ্ন পরিচালনা করতে যাচ্ছে না -। প্রশ্নটি বলে যে কোনও বিরামচিহ্ন বৈধ ইনপুট এবং এড়ানো উচিত। এছাড়াও, আপনাকে হয় input('')ইনপুটটি দখল করতে বা একটি বেনামি ফাংশন লিখতে ব্যবহার করতে হবে কারণ আমরা এই জাতীয় ইনপুট হিসাবে কোনও চলক গ্রহণ করতে পারি না।
স্যুভার

1
এছাড়াও আপনি flipস্ট্রিং বিপরীত ব্যবহার করতে পারেন ।
স্যুভার

বিরামচিহ্ন পোস্ট করার পরে প্রশ্নে সম্পাদনা করা হয়েছিল, তবে আমি এটি ঠিক করব। ইনপুটটির বিষয়ে, আমি কি কেবল ব্যবহার করতে পারি ans, যেমনটি মাতলাব কনসোলকে একটি ডিফল্ট ইনপুট বরাদ্দ করা হয়েছে?
সিনট্যাক্স

1
আমি তাই মনে করি না. এটি একটি স্ব-অন্তর্ভুক্ত সমাধান হওয়া উচিত। আপনার প্রয়োজন s=input('')বা কোনওভাবে এটি একটি বেনামি ফাংশনে @(s)
কারুকাজ করা দরকার

ঠিক আছে, আমি এটি পরে বা কাল করব। আমি এখন আমার কম্পিউটার থেকে দূরে আছি।
সিনট্যাক্স

1

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

-join(($a=$args|% t*y)|%{if($_-in($c=$a-match'[^\W\d_aeiouy]')){$_=$c[--$i]};$_})

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

কম গল্ফড:

$a          = $args|% toCharArray
$consonants = $a-match'[^\W\d_aeiouy]'
$result     = $a|%{if($_-in$consonants){$_=$consonants[--$i]};$_}
-join($result)

পাওয়ারশেল , 88 বাইট, -ফ

$i=0;-join($args|% t*y|%{if($_-match'[^\W\d_aeiouy]'){$c=,$_+$c;$_="{$i}";$i++};$_})-f$c

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


0

কিউ / কেডিবি +, 45 বাইট

সমাধান:

{x[w]:x(|)w:(&)max x=/:.Q.a except"aeiouy";x}

ব্যাখ্যা:

ব্যঞ্জনবর্ণের সূচকগুলি সন্ধান করুন এবং বিপরীত ব্যঞ্জনবর্ণগুলির সাথে তাদের প্রতিস্থাপন করুন:

{x[w]:x reverse w:where max x=/:.Q.a except "aeiouy";x} / ungolfed
{                                                   ; } / two-statement lambda
                                .Q.a except "aeiouy"    / alphabet (a..z) except vowels
                            x=/:                        / equals each-right (returns boolean lists where input is each a consonant)
                        max                             / 'or' the results together
                  where                                 / indices where results are true
                w:                                      / save in variable w
        reverse                                         / reverse this list
      x                                                 / index into input at these indices
 x[w]:                                                  / assign values to x at indices w
                                                     x  / return x

নোট:

ব্যঞ্জনবর্ণের তালিকা তৈরির জন্য আমার কাছে 3 টি উপায় ছিল, সমাধানের একটি বিকল্পের চেয়ে সামান্য ভাল:

  • "bcdfghjklmnpqrstvwxz" 22 টি চর জন্য (সবচেয়ে বিরক্তিকর)
  • .Q.a _/0 3 6 11 16 19 21 টি অক্ষরের জন্য (কুলা শীতল, প্রতিটি সূচক বাদ দিন)
  • .Q.a except"aeiouy" 19 টি চর জন্য (দ্বিতীয় সবচেয়ে বিরক্তিকর)

0

জকি 1.5 , 289 263 বাইট

def C:"bcdfghjklmnpqrstvwxz";. as$s|[("^","")as$p|[match("([\($p)\(C)]+)";"g").captures[].string]]|.[1]|=(reduce map(length)[]as$l({s:add|explode|reverse|implode,r:[]};.r+=[.s[0:$l]]|.s=.s[$l:])|.r)|if$s[0:1]|inside(C)then[.[1,0]]else . end|transpose|map(add)|add

ব্যাখ্যা

def consonants:"bcdfghjklmnpqrstvwxz";

  . as $s
| [  ("^","") as $p                                              # parse string onto non-consonant
   | [match("([\($p)\(consonants)]+)";"g").captures[].string]]   # and consonant groups
| .[1] |= (
     reduce map(length)[] as $l (                                # build new for consonant groups
       {s:add|explode|reverse|implode,r:[]}                      # by adding groups from reversed string
     ; .r+=[.s[0:$l]] | .s=.s[$l:]                               
     )
     |.r
  )
| if $s[0:1]|inside(consonants) then  [.[1,0]] else . end        # put groups into proper order for merge
| transpose | map(add) | add                                     # merge groups into final string

নমুনা রান

$ jq -MRr 'def C:"bcdfghjklmnpqrstvwxz";. as$s|[("^","")as$p|[match("([\($p)\(C)]+)";"g").captures[].string]]|.[1]|=(reduce map(length)[]as$l({s:add|explode|reverse|implode,r:[]};.r+=[.s[0:$l]]|.s=.s[$l:])|.r)|if$s[0:1]|inside(C)then[.[1,0]]else . end|transpose|map(add)|add' input
a sect sate
nedl-lowe
setenne sne cohtosarvr

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


0

জাভা 8, 157 বাইট

s->s.format(s.replaceAll("[^\\W\\d_aeiouy]","%s"),s.chars().mapToObj(c->""+(char)c).filter(c->c.matches("[^\\W\\d_aeiouy]")).reduce("",(x,y)->y+x).split(""))

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

দ্রষ্টব্য: stderr কে সংকলক সতর্কতা প্রিন্ট করে।
ব্যাখ্যা:

s->                                                    // Lambda function
    s.format(                                          // Format a string using the given arguments
        s.replaceAll("[^\\W\\d_aeiouy]","%s"),         // Generate the format string by replacing all consonants with "%s"
        s.chars()                                      // Stream the characters of the input string s
            .mapToObj(c->""+(char)c)                   // Map characters back to strings
            .filter(c->c.matches("[^\\W\\d_aeiouy]"))  // Filter out vowels and symbols
            .reduce("",(x,y)->y+x)                     // Build the string of consonants in reverse
            .split("")                                 // Turn into an array of single-char strings (varargs abuse)
    )                                                  // Implicit return of the formatted string

মিথ্যা বলা হবে না, আমার একমাত্র লক্ষ্য ছিল এই উত্তরটি হারাতে


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