সংখ্যাগুলি


14

ধারণা

সংখ্যা মনে রাখা কঠিন হতে পারে। একটি শব্দ মনে রাখা সহজ হতে পারে। বড় সংখ্যক মুখস্থ করার জন্য, আমি তাদের একটি লেটস্পেক-জাতীয় উপায়ে উচ্চারণ করার একটি উপায় তৈরি করেছি।

বিধি

প্রতিটি অঙ্ক প্রথমে তার সম্পর্কিত চিঠি দ্বারা প্রতিস্থাপন করা হয়:

0 => O
1 => I
2 => R
3 => E
4 => A
5 => S
6 => G
7 => T
8 => B
9 => P

প্রতিস্থাপনের পরে, উন্নত উচ্চারণে দুটি অতিরিক্ত জিনিস করা হয়:

  • দুটি ব্যঞ্জনবর্ণের মধ্যে একটি Uযুক্ত করা হয়।

  • দুটি স্বর মধ্যে একটি Nযোগ করা হয়।

উদাহরণ / পরীক্ষার কেস

512431 => SIRANENI
834677081 => BENAGUTUTOBI
3141592 => ENINANISUPUR
1234567890 => IRENASUGUTUBUPO
6164817 => GIGABIT

কি অসম্ভব

  • চিঠি এবং সংখ্যা একই শব্দ মিশ্রিত
  • পরপর দুটি ব্যঞ্জনবর্ণ বা দুটি ধারাবাহিক স্বর
  • উপরের তালিকায় নেই এমন চিঠিগুলি
  • অন্যান্য অক্ষর

বিধি

এই লক্ষ্য হ'ল এই ধারণার জন্য 2-মুখী অনুবাদক তৈরি করা।

  • আপনার প্রোগ্রামটি প্রথমে নিজের দ্বারা বুঝতে হবে এটি যদি চিঠি থেকে কোনও নম্বর বা সংখ্যা-থেকে-চিঠির অনুবাদ হয়।
  • এন্ট্রিটি সঠিকভাবে গঠনের জন্য এটি অবশ্যই পরীক্ষা করা উচিত।
  • সবকিছু ঠিক থাকলে অনুবাদটি প্রদর্শন করুন।
  • অন্যথায়, একটি ত্রুটি বার্তা প্রদর্শন করুন, কিছুই নয়, একটি মিথ্যা মান ফিরে আসবে বা প্রোগ্রামটি ক্র্যাশ করবে।

বিস্তারিত

  • ইনপুট নম্বর / স্ট্রিং আপনি যে কোনও বিন্যাসে চান তা প্রবেশ করা যেতে পারে (স্টিডিন, আর্গুমেন্ট, ...)
  • এটি , তাই সংক্ষিপ্ত উত্তর জেতে।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

11
না করা উচিত GIGATESTERহবে GIGATESUTER?
কামোরসো94

5
সাধারণত, আমরা এন্ট্রিটি 'সঠিকভাবে গঠনের' জন্য বলি না, কারণ এটি কোনও অকারণে অতিরিক্ত কোড (ভাল চ্যালেঞ্জের সুপারিশগুলির জন্য মেটা প্রশ্ন দেখুন)। অতিরিক্তভাবে, 'সঠিকভাবে গঠিত' এর অর্থ কী?
Okx

9
যদি ইনপুট বৈধতা প্রয়োজন হয়, আপনার অবৈধ ইনপুটগুলির পরীক্ষার ক্ষেত্রে একটি বিশেষ ব্যাচ অন্তর্ভুক্ত করা উচিত (বিশেষত কেবলমাত্র অক্ষরের অক্ষরের ইনপুটগুলি যা প্রায় বৈধ। আমি প্রত্যাশা করি যে এটি আসলে অনেক ভাষায় চ্যালেঞ্জের মূল অংশ হবে।
মার্টিন ইন্ডার

2
আমি @ মার্টিনএেন্ডারের সাথে একমত যে আপনার অবৈধ মামলার জন্য কিছু পরীক্ষার কেস যুক্ত করা উচিত, যেমন AB23; AEI; BB; Z; ACE; giga; !@#$; -123; ইত্যাদি। বৈধতা নিয়মের ভিত্তিতে, আমরা রূপান্তর করতে পারি 6164735732 => GIGATESTER, তবে (দুটি ধারাবাহিক ব্যঞ্জন বিধি) GIGATESTERএর কারণে একটি ভুয়া মান হবে ST। আপনার চ্যালেঞ্জটি বর্তমানে যেভাবে সেট আপ করা হয়েছে, চ্যালেঞ্জের মূল অংশটি রূপান্তর পরিবর্তে বৈধতা। আমি এটির সাথে ভাল আছি, তবে সেই ক্ষেত্রে বৈধতাটি আরও কিছুটা ভালভাবে সংজ্ঞায়িত করা উচিত।
কেভিন ক্রুজসসেন

2
আপনার প্রোগ্রামটি প্রথমে নিজের দ্বারা আন্ডারঅ্যান্ড করতে হবে যদি তা চিঠি-থেকে-সংখ্যা বা সংখ্যা-থেকে-চিঠির অনুবাদ হয়। তাহলে অনুবাদটি দ্বিমুখী হতে হবে? পূর্ববর্তী পাঠ্য এবং পরীক্ষার কেসগুলি কেবলমাত্র চিঠিতে সংখ্যার পরামর্শ দেয়
লুইস মেন্ডো

উত্তর:


5

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

উভয় অনুবাদ উপায়ে স্ট্রিং হিসাবে ইনপুট নেয়। অনুবাদটি স্ট্রিং হিসাবে বা falseকোনও অবৈধ ইনপুট ক্ষেত্রে প্রত্যাবর্তন করে।

f=(n,k)=>(t=n.replace(/./g,(c,i)=>1/n?(!i|p^(p=27>>c&1)?'':'UN'[p])+s[c]:~(x=s.search(c))?x:'',p=s='OIREASGTBP'),k)?t==k&&n:f(t,n)

ডেমো


এটি পুরোপুরি কার্যকর না হলে এটি পোস্ট করবেন না।
Okx

আশা করি এখন প্রত্যাশার মতো কাজ করছেন।
আর্নল্ড

... অথবা ইনপুটটিতে সংরক্ষিত রেজিপ্সপ অক্ষর থাকলে ক্র্যাশ। এখনও বৈধ
edc65

2

জাপট , 61 59 92 85 84 বাইট

আমি বেশিরভাগ (দীর্ঘ) উইকএন্ডের জন্য অফলাইনে আছি, যদি এর সাথে আরও কোনও সমস্যা আবিষ্কার হয় তবে দয়া করে একটি মোডকে আমার জন্য মুছতে অনুরোধ করুন যতক্ষণ না আমি এটি ঠিক করতে পারি।

উভয় ক্রিয়াকলাপের জন্য স্ট্রিং হিসাবে ইনপুট নেয় এবং পাশাপাশি বা falseঅবৈধ ইনপুট উভয়ের জন্য একটি স্ট্রিং প্রদান করে umes সংখ্যার ইনপুটগুলিতে সর্বদা একাধিক সংখ্যা থাকবে, যদি বৈধ না হয় Un<space>তবে প্রতিস্থাপনে 1 বাইট যুক্ত করুন । রিটার্নস falseপরীক্ষা ক্ষেত্রে জন্য GIGATESTERকিন্তু নিয়ম অনুযায়ী, যে হওয়া উচিত অবৈধ ইনপুট।


V="OIREASGTBP"UÉ?¡VgXÃe"%v"²_i1'NÃe"%V"²_i1'UÃ:!Uè"%v%v|%V%V|[^{V}NU]" ©Ur"N|U" £VaX

এটি ব্যবহার করে দেখুন: নম্বর -> চিঠি বা চিঠি -> নম্বর


  • 2 4 বাইট সংরক্ষিত ওবারাকনকে ধন্যবাদ জানায় , যিনি আমাকে আগে ছেড়ে দিয়ে যাওয়ার পরেও এটি পুনরুদ্ধার করতে আমাকে রাজি করেছিলেন। আমার ইচ্ছা যদি সে না থাকে!
  • 33 26 25 (!) বাইটস ইনপুট বৈধতা পরীক্ষা করতে একটি দ্রুত স্থিরকরণ (যেমন পুরোপুরি গল্ফ করা এখনও) বাস্তবায়ন করতে পারে sacrific

ব্যাখ্যা

(তবুও সর্বশেষ সংস্করণে আপডেট হওয়া উচিত)

                          :Implicit input of string U.
V="..."                   :Assign the string of letters to variable V, in order.
UÉ                        :Subtract 1 from U, which will give a number (truthy) if the input is a number or NaN (falsey) if the input is a string.
?                         :If it's a number then
¡                         :    Map over the input string, replacing each character (digit) with ...
VgX                       :      the character in string V at index X, the current digit.
à                        :    End mapping.
e                         :    Recursively replace ...
"%v"²                     :      every occurrence of 2 vowels (RegEx) ...
_i1'N                     :      with the current match with an "N" inserted at index 1.
à                        :    End replacement.
e                         :    Another recursive replacement of ...
"%V"²                     :      every occurrence of 2 non-vowel characters (i.e., consonants) ...
_i1'U                     :      with the current match with a "U" inserted at index 1.
à                        :    End replacement.
:                         :Else, if it's a string then
Uè"%v%v|%V%V|[^{V}NU]"    :    Count the number of matches of 2 successive vowels OR 2 successive non-vowels OR any character not in contained in string V plus N & U.
                          :    (The longest part of this code is the fecking input validation!)
?                         :    If that count is greater than 0 then
T                         :       Return 0.
:                              Else
Ur"N|U"                   :        Replace every occurrence of "N" OR "U" in string U with nothing.
£                         :        Map over the string, replacing each character (letter) with ...
VaX                       :         the index of the current character X in string V.
                          :Implicit output of resulting string

AEI
55

@ এমিগনা: আহা, গডডামনিত! আপনি ভাবতেন, প্রথম "বিধি" প্রাথমিকভাবে পুড়ে যাওয়ার পরে, আমরা বাকী নিয়মগুলি পড়ার চিন্তা করতাম! : \ আমি "কী অসম্ভব" বিভাগটি বোঝায় যে আমাদের সেই পয়েন্টগুলির কোনও পরিচালনা করতে হবে না F ফিক্স শীঘ্রই আসছে coming
শেগি


1

জাভা (ওপেনজেডিকে 8) , 416 410 399 382 376 370 বাইট

-২ বাইটস @ কায়সকে ধন্যবাদ জানায়

-১ more আরও বাইটস @ কোয়েসের একটি ধারণার জন্য ধন্যবাদ

-6 বাইটস @ কেভিন ক্রুজসেনকে ধন্যবাদ thanks

s->{String c="[RSGTBP]",v="[OIEA]",o="([256789])",e="([0134])";boolean b=s.matches("(c$|v$|(c|vN)(?=v)|(cU|v)(?=c))+".replace("c",c).replace("v",v));int i=-1;for(s=b?s.replaceAll("[UN]",""):s.matches("[0-9]+")?s.replaceAll(e+"(?="+e+")","$1N").replaceAll(o+"(?="+o+")","$1U"):i/0+"";i<9;s=b?s.replace(v,c):s.replace(c,v)){c=++i+"";v="OIREASGTBP".charAt(i)+"";}return s;}

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

উঘ, জাভা প্রতিস্থাপন তাই ভার্জোজ।

ফাংশন যা একটি স্ট্রিং নেয় এবং নম্বর -> বর্ণ বা বিপরীতে থেকে অনুবাদ করা স্ট্রিংটি প্রদান করে। অবৈধ ইনপুটটিতে ক্রাশ (আপনি এটি টিও উদাহরণে দেখতে পারেন যেখানে এটি প্রথম 10 টি পরীক্ষার ক্ষেত্রে সঠিক মানকে আউটপুট দেয় এবং তারপরে শূন্য ত্রুটি দ্বারা বিভাজনে ক্র্যাশ হয় যা ডিবাগ ভিউতে দেখায়)

অবহেলিত (লুপের প্রথম এবং শেষ পদের পাঠযোগ্যতার জন্য টানা হয়)

s-> {
    String c="[RSGTBP]", v="[OIEA]", o="([256789])", e="([0134])"; 
    boolean b=s.matches("(c$|v$|(c|vN)(?=v)|(cU|v)(?=c))+".replace("c",c).replace("v",v)); // lovely regex, explained below
    int i=-1;
    s= b? 
        s.replaceAll("[UN]",""); // remove N's and U's
        :s.matches("[0-9]+")?
        s.replaceAll(e+"(?="+e+")","$1N").replaceAll(o+"(?="+o+")","$1U"); // add N's and U's for separating vowels and consonants
        :i/0+""; // throw an error, looks like a sting for the ternary
    for(;i<9;) { 
        c=++i+"";
        v="OIREASGTBP".charAt(i)+"";
        s=b?s.replace(v,c):s.replace(c,v); // if it started with numbers, go to letters, or vice versa
    }
    return s;
}

সংখ্যার সাথে মিলে যাওয়ার জন্য রেজেক্স সহজ, তবে এখানে সংখ্যার ক্ষেত্রে অক্ষরের সাথে মিল রাখার জন্য রেজেক্স

(c$|v$|(c|vN)(?=v)|(cU|v)(?=c))+
(                             )+   every part of the word is
 c$                                a consonant at the end of the word
   |v$                             or a vowel at the end of the word
      |(c|vN)(?=v)                 or a consonant or a vowel + N followed by a vowel
                  |(cU|v)(?=c)     or a consonant + U or a vowel followed by a consonant


with c = [RSGTBP] and v = [OIEA]

এটি আপনার বিশাল বাইট গণনা উল্লেখযোগ্যভাবে উন্নত করে না, তবে আপনি আশেপাশের বন্ধনীগুলি সরাতে পারেন(s)->
সাইয়েস

@ কিউস প্রতি বাইট সাহায্য করে
PunPun1000

যেহেতু আপনার ifবিবৃতিটির সমস্ত শাখা অ্যাসাইনমেন্ট (যা কোনও মান ফেরত দেয়), তাই শর্তসাপেক্ষ অপারেটরের সাথে if... else if... প্রতিস্থাপনের চেষ্টা করুন , এটি একটি বৈধ বিবৃতি হিসাবে প্রিফ্যাক্স করুন । নিশ্চিত না যে এটি আসলে বাইট গণনাটিতে সহায়তা করবে কিনা তবে আমি মনে করি এটি হবে। else?:Object _=
সাইয়েস

দুটি ছোট জিনিস আপনি গল্ফ করতে পারেন। আপনি স্ট্রিংটি সরিয়ে ফেলতে পারেন t, কারণ আপনি কেবল এটি একবার ব্যবহার করেন। সুতরাং t.charAt(i)+""হয়ে যায় "OIREASGTBP".charAt(i)+""( -4 বাইট )। এবং আপনি শেষ লাইনটি ফর-লুপের i<9;ভিতরে-লুপ ঘোষণার অভ্যন্তরের পরে রাখতে পারেন । সুতরাং এটি হয়ে যায় for(;i<9;s=b?s.replace(v,c):s.replace(c,v)){( -1 বাইট )। ওহ, এবং আপনি s=b?...যেটি আসেন ঠিক int i=-1;সেইভাবে লুপটির অভ্যন্তরের পরেও রাখতে পারেন : for(s=b?...;i<9;...( -1 বাইট )।
কেভিন ক্রুইজসেন

1

পিএইচপি; 129 127 267 259 228 বাইট

$l=IOREASGTBP;$n=1023456789;ctype_digit($s=$argn)?:$s=preg_replace("#U|N#","",strtr($o=$s,$l,$n));for($r=$c=($t=strtr($s,$n,$l))[$i++];$d=$t[$i++];)$r.=((trim($c,AEIO)xor$x=trim($d,AEIO))?X:UN[!$x]).$c=$d;echo$o?$o==$r?$s:"":$r;

পাইপ হিসাবে চালান -nRবা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

$l=IOREASGTBP;$n=1023456789;
# if not digits, translate letters to digits and remember original
ctype_digit($s=$argn)?:$s=preg_replace("#U|N#","",strtr($o=$s,$l,$n));
# translate digits to letters:
for($r=$c=($t=strtr($s,$n,$l))                      # result = first letter
    [$i++];$d=$t[$i++];)                            # loop through letters
    $r.=((trim($c,AEIO)xor$x=trim($d,AEIO))?"":UN[!$x]) # append delimiter if needed
        .$c=$d;                                         # append next letter
# 
echo
    $o              # if original was remembered,
        ?$o==$r         # compare original to final result
            ?$s         # if equal, print digits
            :X          # else print X (as error message)
        :$r;        # else print letters

1

জাভা 8, 312 308 304 301 294 290 বাইট

s->{String r="",x="([AEIOU])",y="([BGNPRST])",z="0O1I2R3E4A5S6G7T8B9P";for(int c:s.getBytes())r+=c!=78&c!=85?z.charAt((c=z.indexOf(c)+(c<58?1:-1))<0?0:c):"";return s.matches("(("+x+y+")*"+x+"?)|(("+y+x+")*"+y+"?)|\\d*")?r.replaceAll(x+"(?="+x+")","$1N").replaceAll(y+"(?="+y+")","$1U"):"";}

বাগ-ফিক্সের জন্য -4 বাইট (308 → 304) (আমার কোডে কোনও বাগ ফিক্স করার সময় বাইট-কাউন্ট হ্রাস হয় না এমনটি প্রায়শই ঘটে না ...: D)

সম্পাদনা: এর চেয়ে আলাদা পদ্ধতির ব্যবহার করে অক্ষরের উপর একটি ফ্রি -লুপে প্রথমে রিটার্ন-স্ট্রিং তৈরি করে @ পুনপুন1000 এর জাভা উত্তরের ব্যবহার করে এবং তারপরে রিটার্ন-টের্নারিটিতে এটি বৈধ করার জন্য আরও বিমূর্ত রেগেক্স ব্যবহার করে (ইনপুটটি হয় সমস্ত অঙ্ক, বা প্রদত্ত স্বর এবং ব্যঞ্জনবর্ণগুলি পর্যায়ক্রমে চলছে (সুতরাং কোনও সংলগ্ন স্বর বা ব্যঞ্জনবর্ণ ব্যতীত)।

ব্যাখ্যা:

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

s->{                                   // Method with String parameter and String return-type
  String r="",                         //  Result-String
    x="([AEIOU])",y="([BGNPRST])",     //  Two temp Strings for the validation-regex
    z="0O1I2R3E4A5S6G7T8B9P";          //  And a temp-String for the mapping
  for(int c:s.getBytes())              //  Loop over the characters of the input-String
    r+=                                //   Append to the result-String:
       c!=78&c!=85?                    //    If the character is not 'N' nor 'U':
        z.charAt(                      //     Get the character from the temp-String `z`
         (c=z.indexOf(c)+              //      by getting the character before or after the current character
            +(c<58?1:-1))              //      based on whether it's a digit or not
             <0?0:c)                   //      and a 0-check to prevent errors on incorrect input like '!@#'
       :                               //    Else:
        "";                            //     Append nothing
                                       //  End of loop (implicit / single-line body)
  return s.matches("(("+x+y+")*"+x+"?)|(("+y+x+")*"+y+"?)|\\d*")?
                                       //  If the input is valid
                                       //  (Only containing the vowels and consonants of `x` and `y`, without any adjacent ones. Or only containing digits)
    r                                  //   Return the result
     .replaceAll(x+"(?="+x+")","$1N")  //    after we've added 'N's if necessary
     .replaceAll(y+"(?="+y+")","$1U")  //    and 'U's if necessary
   :"";                                //  Or return an Empty String if invalid
}                                      // End of method

বৈধতা রেজেক্স:

(([AEIOU][BGNPRST])*[AEIOU]?)|(([BGNPRST][AEIOU])*[BGNPRST]?)|\\d*


0

সজোরে আঘাত ,241 238 235 বাইট

q=OIREASGTBP;[[ $1 == +([0-9]) ]]&&(x=`tr 0-9 $q<<<$1`;m={B,G,P,R,S,T};n={A,E,I,O};for i in `eval echo $m$m$n$n`;{ a=${i::1};b=${i:1:1};x=${x//$a$b/$a'U'$b};a=${i:2:1};b=${i:3:1};x=${x//$a$b/$a'N'$b};};echo $x)||tr $q 0-9<<<$1|tr -d UN

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

কম গল্ফড:

q=OIREASGTBP;                          save string in q
[[ $1 == +([0-9]) ]]&&(                if argument 1 is only digits
x=`tr 0-9 $q<<<$1`;                    save in x each digit translated to corresponding letter
m={B,G,P,R,S,T};
n={A,E,I,O};
for i in `eval echo $m$m$n$n`;{        generates all combinations of vowels and consonants
                                       BBAA BBAE ... TTOI TTOO
   a=${i::1};                          saves first consonant in a
   b=${i:1:1};                         saves second consonant in b
   x=${x//$a$b/$a'U'$b};               insets U between consonants
   a=${i:2:1};                         saves first vowel in a
   b=${i:3:1};                         saves second vowel in b
   x=${x//$a$b/$a'N'$b};               inserts N between vowels
};
echo $x                               echoes result
)||                                   if argument contains letters
  tr $q 0-9<<<$1|tr -d UN             translates letter to corresponding number and deletes U and N


0

পার্ল, 127 বাইট

126 বাইট +1 বাইট কমান্ড লাইন

$i="AEIOU]";$;=OIREASGTBP;1/!/[^$;NU\d]|[$i{2}|[^\d$i{2}/;eval"y/0-9$;NU/$;0-9/d";s/[$i\K(?=[$i)/N/g;s/[^N\d$i\K(?=[^\d$i)/U/g

ব্যবহার:

 echo -n "512431" | perl -p entry.pl

সমস্ত চ্যালেঞ্জ নিয়ম অনুসরণ করা উচিত - অক্ষর বা সংখ্যা গ্রহণ করতে পারে এবং বৈধতা ব্যর্থ হলে ত্রুটি (শূন্য দ্বারা বিভাগ) করবে)


বৈধকরণ ইনপুট NOএবং উপর মিথ্যা ইতিবাচক আছে US
মান কালি

0

চুনি , 205 + 1 = 206 বাইট

-p+1 বাইটের জন্য পতাকা ব্যবহার করে । এখন একটি সম্পূর্ণ ইনপুট বৈধকরণ সিস্টেম।

d,w=%w"0-9 OIREASGTBP"
~/^\d+$/?($_.tr!d,w
gsub /([#{a='AEIO])(?=\g<1>)'}/,'\0N'
gsub /([^#{a}/,'\0U'):(+~/^(([AEIO])(N(?=[AEIO])|(?=\g<4>)|$)|([RSGTBP])(U(?=\g<4>)|(?=\g<2>|$)))+$/;$_.tr!("NU","").tr!w,d)

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


এটি অক্ষরগুলিকে সংখ্যায় রূপান্তরিত করে না বলে মনে হয় না এবং এটি কোনও বৈধতাও দেয় না!
জারমেক্স

@ জারমেক্স উফ, যুক্ত বৈধতা! এটি একটি বিশাল বৈধতা যাচাই করা হয়েছে তবে বিষয়টি সম্পর্কে আমার খুব বেশি পছন্দ নেই
মান কালি

0

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

from functools import reduce;c=0;e="";n="NU";v="AEIOU";l="OIREASGTBPNU";x=('0','O'),('1','I'),('2','R'),('3','E'),('4','A'),('5','S'),('6','G'),('7','T'),('8','B'),('9','P');s=input()
try:
    int(s);y=reduce(lambda a,kv:a.replace(*kv),x,s)
    for i in y:
        e+=i
        if i in v:
            z=True
            try:
                if y[c+1] in v:e+="N"
            except:
                pass
        else:
            z=False
            try: 
                if not y[c+1] in v:e+="U"
            except:
                pass
        c+=1
except:
    for i in s:
        if not i in l:
            p
    y=reduce(lambda a,kv:a.replace(*kv[::-1]),x,s)
    for i in y: 
        if not i in n:e+=i
print(e)

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

উন্নতির জন্য অনেক জায়গা আছে, আমি জানি।


0

সেড, 123 বাইট

s/[0134]/_&_/g
s/[25-9]/=&=/g
ta
y/OIREASGTBPU/0123456789N/
s/N//g
q
:a
s/__/N/g
s/==/U/g
y/0123456789_/OIREASGTBP=/
s/=//g

ব্যাখ্যা

প্রথমত, আমরা অঙ্কগুলি ঘিরে করি _ (স্বরগুলির জন্য) বা= (ব্যঞ্জনবর্ণের জন্য ।

যদি আমরা কোনও বিকল্প না করে থাকি, আমরা অক্ষরগুলিকে অঙ্কগুলিতে রূপান্তর করি, সুতরাং এটি একটি সহজ বিকল্প, এবং মুছুন Uএবং N। তারপরে ছেড়ে দিন।

অন্যথায়, আমরা লেবেলে শাখা করি a, যেখানে আমরা ধারাবাহিক স্বরগুলি এবং তারপরে পরপর ব্যঞ্জনবর্ণগুলি মোকাবিলা করি। তারপরে অঙ্কগুলিকে অক্ষরে রূপান্তরিত করুন এবং চিহ্নিত পদক্ষেপগুলি মুছুন আমরা প্রথম ধাপে।


0

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

v=lambda x:x in"AEIO"
V="OIREASGTBP"
i=input()
r=__import__("functools").reduce
print(r(lambda x,y:x+(("U",""),("","N"))[v(x[-1])][v(y)]+y,map(lambda x:V[x],map(int,i)))if i.isdigit()else r(lambda x,y:x*10+V.index(y),filter(lambda x:x in V,i),0))    

ব্যাখ্যা:

  • কোন তালিকা ইন মানচিত্র ইনপুট
  • বর্ণমালায় তাদের অবস্থানের মানচিত্রের তালিকা
  • সংযোজক যোগ করে তালিকা হ্রাস করুন, একটি ডিক টুপলের একটি উপাদান , বর্তমানের উপাদানটি যোগ করুন
    • অভি tuple দুটি উপাদান, স্বরবর্ণ হচ্ছে বা না উপর ভিত্তি করে একটি সত্য টেবিল

0

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

স্ট্রিং হিসাবে ইনপুট গ্রহণ করা একটি ফাংশন। ইনপুটটি বৈধ হলে অন্যথায় মিথ্যা বা ফাংশন ক্র্যাশ হয়ে থাকলে এটি সঠিকভাবে অনুবাদ হওয়া স্ট্রিংটি ফিরিয়ে দেয়।

n=>(t=n=>n.replace(/./g,d=>1/d?(v-(v=d<5&d!=2)?'':'UN'[v])+z[d]:~(a=z.search(d))?a:'',v=2,z='OIREASGTBP'))(q=t(n))==n&&q

কম গল্ফড

n => 
{
  var t = n => { // function to translate, no check for invalid input
    var v = 2; // 1 = digit map to vowel, 0 = digit map to consonant, start with 2
    var z = 'OIREASGTBP'; // digits mapping
    return n.replace(/./g,
      d => 1/d // digit / alpha check
        ? ( // if digit
            w = v, // save previous value of v
            v = d < 5 & d != 2, // check if current digit will map to wovel or consonant
            (w != v 
             ? '' // if different - wovel+consonant or consonant+wovel or start of input
             : 'UN'[v] // if equal, insert required separator
            ) + z[d] // add digit translation
          )
        : ( // if alpha
             a = z.search(d), // look for original digit. Could crash if d is a reserved regexp char (not valid input)
             a != -1 ? a : '' // if digit found add to output, else do nothing
          )
    )
  }

  var q = t(n); // translate input an put in q
  if (t(q) == n) // translate again, result must be == to original input
    return q; // if ok return result
  else
    return false; // else return false
}

পরীক্ষা

var F=
n=>(t=n=>n.replace(/./g,d=>1/d?(v-(v=d<5&d!=2)?'':'UN'[v])+z[d]:~(a=z.search(d))?a:'',v=2,z='OIREASGTBP'))(q=t(n))==n&&q

;`512431 => SIRANENI
834677081 => BENAGUTUTOBI
3141592 => ENINANISUPUR
1234567890 => IRENASUGUTUBUPO
6164817 => GIGABIT`
.split('\n')
.forEach(x => {
  var [a,b] = x.match(/\w+/g)
  var ta = F(a)
  var tb = F(b)
  console.log(a==tb ? 'OK':'KO', a + ' => '+ ta)
  console.log(b==ta ? 'OK':'KO', b + ' => '+ tb)
})

function go() {
  O.textContent = F(I.value)
}

go()
<input id=I value='NUNS' oninput='go()'>
<pre id=O></pre>

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