ডিকোড বেবি-টক!


26

বাচ্চারা যখন মুখ খোলেন, তারা কেবল গীবত করে না। তারা আসলে একটি উচ্চ উন্নত, প্রাপ্ত বয়স্ক-প্রমাণ সিফারে কথা বলছে ...

বেবি-টক সিফার

যখন কোনও শিশু কথা বলে, তখন এমন কিছু চেহারা দেখতে পেল যা gogooa gagooook aagaaoooy প্রতিটি একক-স্থান পৃথক বিভাগ একটি চরিত্রকে উপস্থাপন করে (সুতরাং উপরের উদাহরণটি 3 টি অক্ষরের প্রতিনিধিত্ব করে)।

কোন বিভাগটি বোঝাবার জন্য, আমাদের অবশ্যই এটি এবং ওএস সহ থাকা সংখ্যা গণনা করতে হবে। তবে আমরা কেবল তাদের গণনা করি যা অন্য স্বর সংলগ্ন। উদাহরণস্বরূপ, 'ঠাট্টা' এ A গণনা করবে না, তবে 'গোগ' এ এবং ও উভয়ই হবে।

উপরের উদাহরণটি গণনা করা এরকম দেখতে পাবেন:

Section    | Num Os | Num As

gogooa     | 2      | 1
gagooook   | 4      | 0
aagaaoooy  | 3      | 4

এরপরে আমরা ইনপুটটিকে পলিবিয়াস স্কোয়ারে প্লেটেক্সটে রূপান্তর করতে এই মানগুলি ব্যবহার করি। এটি 'জে' বাদ দিয়ে ইংরেজি বর্ণমালার একটি 5x5 উপস্থাপনা (দয়া করে মনে রাখবেন যে, শিশু-আলাপে 0 গণনার নিয়মগুলি টেবিলে প্রযোজ্য):

  0 1 2 3 4
0 A B C D E
1 F G H I K
2 L M N O P
3 Q R S T U
4 V W X Y Z

কলাম হিসাবে ওস এর সংখ্যা এবং সারি হিসাবে সংখ্যা ব্যবহার করে আমরা দেখতে পাই যে প্রতিটি বিভাগটি কোন চরিত্রের প্রতিনিধিত্ব করে:

Section    | Num Os | Num As | Character

gogooa     | 2      | 1      | (2,1) -> H
gagooook   | 4      | 0      | (4,0) -> E
aagaaoooy  | 3      | 4      | (3,4) -> Y

যা আমাদের জানায় যে শিশুটি কেবল "হ্যাই" বলছিল।

নোটস :
- কোনও চরিত্রের প্রতিনিধিত্বকারী কোনও বিভাগে 4 বা ওস হিসাবে 4 এর বেশি থাকলে অতিরিক্তগুলি উপেক্ষা করুন, কারণ 4 টেবিলের সর্বোচ্চ মান। - এই কাজের জন্য, ওয়াই একটি স্বর নয় - কেবল এ, ই, আই, ও এবং ইউ।

চ্যালেঞ্জ

আপনার কাজটি এমন একটি সম্পূর্ণ প্রোগ্রাম তৈরি করা যা একটি ইনপুট, শিশু-স্পোকে একটি শব্দ লাগে এবং এটি সরলরেখায় মুদ্রণ করে।

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

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

'GLOOG KAKAAOOO ARGOOO OOOOOGUGUU' -> CODE
'oaka pooopaa gaau augu' -> GOLF
'Aoao U oOOAoa oaoAoo aoAoAOa' -> NAPPY
'GUG gAGaA gOougOou' -> ALE
'OOaGOG GoGOOoGoU gAA bLAA GOUGoOUgAIGAI' -> HELLO

3
'GUG gAGaA gOougOou' -> 'ALE'বাচ্চারা আলে পান করে? : ডি
ক্রিটিক্সী লিথোস

7
কেবল সেরা: ডি @ ক্রিটিক্সিলিথোস
ফ্লিপট্যাক

1
মামলার প্রয়োজনীয়তা অপ্রয়োজনীয় মনে হচ্ছে, তাই না? আপনি যা করছেন সবগুলিই একটি .toUpperCase()অনুরূপ ফাংশন কল যুক্ত করছে, আসলে উদ্দীপক চ্যালেঞ্জ নয়
মেয়রমন্টি

1
কীভাবে gogooa2 টি হয়? এবং কিভাবে gagooook0 এ এর ​​আছে?
ম্যাজিক অক্টোপাস উরন

1
আসলে, @ এরিকথগল্ফার, এটি FAG: পি
ফ্লিপট্যাক

উত্তর:


6

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

lð¡vyžNvyð:}ð¡D€g1›ÏJ©'a¢4‚W5*®'o¢4‚Ws\+A'j-è?

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

পদক্ষেপে ব্যাখ্যা

  1. শব্দ গঠনের জন্য স্পেসে বিভক্ত
  2. শব্দের সাথে কানসন্যান্টসকে শূন্যস্থান দিয়ে প্রতিস্থাপন করুন
  3. স্বরগুলির গোষ্ঠী গঠনে শব্দগুলিকে স্পেসে বিভক্ত করুন
  4. 2 এর চেয়ে কম দৈর্ঘ্যের স্বর গোষ্ঠীগুলি সরান
  5. মিনিটের গণনা (ক) এবং 4 পান, 5 দিয়ে গুণ করুন
  6. মিনিট গণনা (ও) এবং 4 পান
  7. গণনা যোগ করুন
  8. বর্ণমালার সূচীতে চিঠি পান ("জে" বাদে)

ভাল কাজ, জয়ের জন্য অভিনন্দন
ফ্লিপট্যাক

আমি ব্যঞ্জনবর্ণ দ্বারা বিভক্ত করার পদ্ধতির পছন্দ করি, আমি
সেটির কথা ভাবিনি

9

পার্ল, 82 বাইট

এর জন্য +1 অন্তর্ভুক্ত -a

এসটিডিনে ইনপুট দিন:

perl -M5.010 baby.pl <<< "OOaGOG GoGOOoGoU gAA bLAA GOUGoOUgAIGAI"

baby.pl:

#!/usr/bin/perl -a
say map{$A=$O=$_=uc;y/AEIOU/@/c;s/(\B.|.\B)/$$1+=$$1<4/eg;(A..I,K..Z)[5*$A+$O]}@F

এটি -aবোঝায় একটি সাম্প্রতিক পর্যায়ে পার্ল সংস্করণ -n। যদি আপনার পার্লটি খুব পুরানো হয় তবে আপনাকে একটি স্পষ্ট -nবিকল্প যুক্ত করতে হবে ।

এটি এও ধরে নিয়েছে যে বাচ্চারা সাধারণ ASCII স্ট্রিংগুলি বলতে পারে না যেগুলি পছন্দগুলি সহ শুরু হয় 1 this will not work


এটি একটি সঠিক অনুমান। আমি প্রশ্নের মধ্যে তা নির্দিষ্ট করে নেওয়ার বিষয়টি নিশ্চিত করব
ফ্লিপট্যাক

6

ব্রেনফাক, 656 বাইট

+[[>>>,[>++++[<-------->-]]<]<<[>]<-[+[<+>>+<-]----[>>+<<----]>>+[<[-<]<[>]>>-]-<[[-]>+<]>[[-[->]<<+>]<->>>]<<<[>>>+<<<-]<<-]>>>>>[[<+>>+<-]----[>-<----]>--[----<]<[>]>[----<]<[>]>[------<]<[>]>[------<]<[>]><+>[[-]<->]>>]<<<[>->]<[<]>[>[<<<<<+>>>>>>+<-]<<<<]<[-]>>>>[<[>[>+<-]<-]>[-]->[<+>-]>>]<<<[-<----[>-<----]>[>+>+<<-]+>[<->[-]<]<[<]>[[<<<]<+>>>>[>>>]<<<-]>+>--------------[<->[-]]<[-<<<<[<<<]>+>>[>>>]>]<<<<]<[<+<+>>-]>++++[<<[->]>[<]>-]+<<[[-]++++<[-]>>]>[<]<<[>+<-]>>+>->[>+>+<<-]<++++[>>[-<]<[>]<-]>>[[-]++++>[-]]<<<[>]<->>>>[<+>-]<[<<<+>>>-]<<<<[>+++++<-]>[>+>+<<-]<++++++++[>>[-<]<[>]<-]>>[[-]>+<]----[>+<----]>++.[-]+>>>,[<++++[>--------<-]]>]

এটি বেশ কয়েক ঘন্টা খুন করার দুর্দান্ত উপায় ছিল।

একটি ব্রেইনফাক ইন্টারপ্রেটারের প্রয়োজন যা 8 বিট মোড়ানো ঘর ব্যবহার করে, আপনাকে সেল 0 থেকে বাম দিকে যেতে দেয় এবং স্টিডিন ,খালি থাকলে ব্যবহার করা হলে 0 ফেরত দেয় । আমার অভিজ্ঞতায়, এগুলি সর্বাধিক সাধারণ সেটিংস।

এই প্রোগ্রামটি Y কে স্বর হিসাবে বিবেচনা করে না, তবে ওপি যদি এটি চায় তবে এটি একটি সহজ সমাধান fix

দেখে মনে হচ্ছে এটি লেখার পক্ষে একটি দুরূহ কাজ হবে তবে ভাষার সাথে যদি আপনার কিছুটা পরিচয় থাকে তবে কোডটিতে অবাক হওয়ার মতো বা নতুন কিছু নেই। স্ট্যান্ডার্ড ব্রেইনফাক কৌশল: ইনপুটটি পড়ুন তবে নিশ্চিত হয়ে নিন যে আপনি প্রতিটি বাইটের মধ্যে কয়েকটি ফাঁকা ঘর রেখেছেন, ইনপুট সম্পর্কে ডেটা সংরক্ষণ করার জন্য এই খালি ঘরগুলি ব্যবহার করুন, কীভাবে রূপান্তর করতে হবে তা স্থির করার জন্য আপনার সঞ্চিত ডেটা ব্যবহার করুন এবং কিছু শেষে থুতু ফেলুন । এই ক্ষেত্রে এটি ইনপুট পেয়েছিল, এটি সমস্ত বড় হাতের অক্ষরে নির্ধারণ করুন, কোন কোষ স্বর রয়েছে তা নির্ধারণ করুন , স্বরগুলির পাশে কোন কোষ রয়েছে তা নির্ধারণের জন্য এটি তথ্যটি ফেলে দিন, কিছু স্বরর পাশে নয় এমন কিছু সেট করুন মানটি কখনই প্রাসঙ্গিক হবে না যাতে তারা পরে হয় না, এবং আপনি মূলত সম্পন্ন করেছেন। সেখান থেকে আপনাকে কেবল আপনার Aএস এবং Oএস গণনা করতে হবে , গুণ করতে হবেAএস দ্বারা 5 এবং Oএস এর সংখ্যা যোগ করুন , জে এবং আউটপুট এড়ানোর জন্য 8 এরও বেশি বিশেষ কিছু। একবারে পুরো ইনপুট না নিয়ে আমি একবারে এই শব্দটি হ্যান্ডেল করা বেছে নিয়েছিলাম, সুতরাং আমাকে কোডের এমন একটি অংশটি সেট করতে হয়েছিল যা স্টিডিনকে 0 বা 32 এ ভাঙ্গতে পড়তে পারে, তবে এটি কোনও সমস্যার খুব বেশি বড় নয় not (কেবলমাত্র শর্তসাপেক্ষে 32 দ্বারা বিয়োগটি মোড়ানো যাতে মানটি ইতিমধ্যে 0 হয় তবে তা না ঘটে, তারপরে যে কোনও নির্দেশাবলী <বা >পরে আপনাকে মিস করা হয়েছে তার জন্য সঠিক করুন )।

আমি জানি না এটি কতটা সহায়ক হবে কারণ আমি বেশিরভাগ ক্ষেত্রেই আমার ধারণাটি আসল ব্যাখ্যা হিসাবে না বলে সোজা রাখার জন্য লিখেছিলাম, তবে আমার মন্তব্যগুলি এবং এর আসল ইন্ডেন্টেশন সহ কোডটি এখানে:

+[[>>>,[>++++[<-------->-]]<]get an entire word of input
                            each character lowered by 32
                            two empty cells between characters
                            stops when reaching a space or null byte

any lowercase letters have become uppercase; anything with a value below 65 used
to be an uppercase character; fix it

<<[>]<-[+                for each character until hitting 1:
  [<+>>+<-]              make a backup
  subtract 64 from the character but stop if it hits 0
  ----[>>+<<----]>>+     generate the number 64
  [                      64 times:
    <[                     if the character is not 0:
      -                    subtract 1
      <                    go to a guaranteed 0 cell to break the loop
    ]

    we're either on the character or to the left of it; sync up
    <[>]

  >>-]
  -<[[-]>+<]>            logical NOT of character

  [                      if logical NOT returns true:
    [-[->]<<+>]<-          add 32 to backup of character
  >>>]

  <<<[>>>+<<<-]          move copy over to make room
<<-]
  >>>>>[                 for each character:
  [<+>>+<-]              make copies
  ----[>-<----]>--       check if it's A
  [----<]<[>]>           check if it's E
  [----<]<[>]>           check if it's I
  [------<]<[>]>         check if it's O
  [------<]<[>]>         check if it's U

  IF YOU NEED TO ADD Y; THIS IS THE PLACE

  <+>[[-]<->]            logical NOT to complete vowel check
>>]

<<<[                if the last char is a vowel; prevent a side effect
  >->
]

<[<]>[                 for each character:
  >[                     if it's a vowel:
    <<<<<+>>>>>>+<-          leave a flag to the left and right to show that a
  ]                          vowel is adjacent
<<<<]

<[-]>                  clean up a side effect left behind if first char is vowel

>>>[                   for each char:
  <[                     if it's adjacent to a vowel:
    >[>+<-]<-              move it to the side
  ]
  >[-]-                otherwise; destroy it
  >[<+>-]              move backup over if it exists (subtracting 1)
>>]

all characters without a vowel beside them have been set to 255
all characters with a vowel beside them are set to itself minus 1

notable charaters are: 'A' minus 1 = 64
                       'O' minus 1 = 78

<<<[                 for each character:
  -<----[>-<----]      subtract 64
  >[>+>+<<-]           make a copy
  +>[<->[-]<]<[<]>     logical NOT

  [[<<<]<+>>>>[>>>]<<<-] if NOT returns true; record an A

  >+>--------------  subtract 14 from backup

  [<->[-]]<          logical NOT
  [-<<<<[<<<]>+>>[>>>]>] if NOT returns true; record an O
<<<<]


<[<+<+>>-]           make a backup of A count
>++++[<<[->]>[<]>-]  subtract 4 but don't go below 0
+<<[                   if the char was greater than 3:
  [-]++++<[-]>>          put 4 there
]
>[<]                  resynchronise
<<[>+<-]              if there were fewer than 4 As put the number back

same thing but for the O count

>>+>->[>+>+<<-]       make a backup of O count
<++++[>>[-<]<[>]<-]   subtract 4 but don't go below 0
>>[                     if the char was greater than 3:
  [-]++++>[-]             put 4 there
]
<<<[>]                resynchronise
<->>>>[<+>-]          if there were fewer than 4 Os put the number back

<[<<<+>>>-]<<<<[>+++++<-] A*5 plus B = index of character to output

>[>+>+<<-]            make a backup
<++++++++[>>[-<]<[>]<-] subtract 8 but don't go below 0
>>[[-]>+<]            if the result is nonzero it is late enough in the alphabet
                      that it must be increased by 1 to exclude J as a possible
                      output
----[>+<----]>++      add 65 to make it a letter
.[-]+>>>,             output and get new input
[<++++[>--------<-]]> sub 32 if not 0
]

এটি আশ্চর্যজনক ... এবং হ্যাঁ, স্বর দ্বারা আমি
বোঝাচ্ছি

6

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

alert(prompt().replace(/\S+ ?/g,x=>(g=r=>(q=(x.match(/[aeiou]{2,}/gi)+"").split(r).length-1)>4?4:q,(g(/a/i)*5+g(/o/i)+10)*20/19|0).toString(36)))

প্রতিটি শব্দ (এবং নিম্নলিখিত স্থান) এর সাথে সম্পর্কিত অক্ষরের সাথে প্রতিস্থাপন করে।

s.split` `.map().join`` 3 বাইট দীর্ঘ:

alert(prompt().split` `.map(x=>(g=r=>(q=(x.match(/[aeiou]{2,}/gi)+"").split(r).length-1)>4?4:q,(g(/a/i)*5+g(/o/i)+10)*20/19|0).toString(36)).join``)

চ্যালেঞ্জটি বর্তমানে উল্লেখ করেছে যে আপনার "একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা [এসটিডিআইএন থেকে] ইনপুট নেয় এবং এটি [এসটিডিআউট] প্রিন্ট করে"। এর অর্থ বর্তমানে লিখিত ফাংশন উত্তরগুলির অনুমতি নেই।
CAD97

দুর্দান্ত জমা দেওয়া, তবে সিএডি যেমন বলেছে, এটি একটি সম্পূর্ণ প্রোগ্রাম হতে হবে। আমি জাভাস্ক্রিপ্টের সাথে খুব বেশি পরিচিত নই তবে আমি মনে করি প্রম্পট এবং সতর্কতা STDIN / OUT এর সেরা সমতুল্য, তাই না?
ফ্লিপট্যাক

@ Flp.Tkc হ্যাঁ, যদি না আপনি নোড বা অন্য কোনও পরিবেশ ব্যবহার করছেন। আমি আমার কোড আপডেট করব।
ETH প্রোডাকশনগুলি

প্রশ্ন বলতে বা নিকটতম সমতুল্য না। ব্রাউজারে জেএস-এর জন্য, একটি প্রম্পট এবং সতর্কতা যথেষ্ট নিকটে
ফ্রেড স্টার্ক

5

পার্ল, 159 +1 = 160 বাইট

-N পতাকার জন্য +1 বাইট। সাদা স্থান কোডের অংশ নয় এবং কেবল পাঠযোগ্যতার জন্য সরবরাহ করা হয়।

for(split$",lc){
    $b=0;
    @a=sort/([ao](?=[aeiou])|(?<=[aeiou])[ao])/g;
    $b++until$b>$#a||$a[$b]eq o;
    $c=($d=$#a-$b+1)>4?4:$d;
    $b=$b>4?4:$b;
    print+(a..i,k..z)[5*$b+$c];
}

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


4

ব্রেইনফাক, 283 বাইট

,[[<[>-[>>>-<<<----[----[>+<------[>-<------[<[-]>>>>[-]->>[-]<<<<<-]]]]]>[>>>>+
<<<<-]>>+<[>[>+<-]>>[>+<-]<<<-]<,<<[>>>+<<<-]>]>+[<+>[-<<]>[[-]+++++[<++++++>-]<
+<]>>>]<]>>[-]>+>>+[[-]>[<+>-[<+>-[<+>-[<+>[-]]]]]<<<]>->[>+<-[[>+<-]>>+>]>[+>--
--[->]]]+[-<+]>>+++++++++++++[>+++++<-]>.,]

বিন্যাসকৃত:

,
[
  [
    <
    [
      >-
      [
        not a
        >>>-<<<
        ----
        [
          not e
          ----
          [
            not i
            >+<
            ------
            [
              not o
              >-<
              ------
              [
                consonant
                <[-]>
                >>>[-]->>[-]<<<<<-
              ]
            ]
          ]
        ]
      ]
      >[>>>>+<<<<-]> >+<
      [
        prev was vowel
        >[>+<-]>>[>+<-]<<<-
      ]
      <,<<[>>>+<<<-]
      >
    ]
    >+
    [
      <+>[-<<]
      >[[-]+++++[<++++++>-]<+<]
      >>>
    ]
    <
  ]
  >>[-]>+>>+
  [
    [-]
    >[<+>-[<+>-[<+>-[<+>[-]]]]]<
    <<
  ]
  >->
  [
    >+<-
    [
      [>+<-]
      >>+>
    ]
    >
    [
      +>----[->]
    ]
  ]
  +[-<+]
  >>+++++++++++++[>+++++<-]
  >.,
]

এটি ইনপুটটিতে ট্রেলিং করা নতুন লাইনের সাথে বা ছাড়া কাজ করে।

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

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

স্মৃতি বিন্যাসের স্কেচ:

0 x C c y a A b B

যেখানে cইনপুট অক্ষর, হয় Cগৃহস্থালির কাজ গেলিক ভাষার 32 হয়, xএটি আপনার স্বরবর্ণ হয়, yকিনা পূর্ববর্তী গৃহস্থালির কাজ একটি স্বরবর্ণ ছিল, হয় Aএবং Bবৈধ (স্বরবর্ণ পাশে) এর গন্য হয় aএবং oঅক্ষর যথাক্রমে, এবং aএবং bতাদের নিজ নিজ বাফার আছে সংলগ্ন স্বর আছে কিনা তার উপর নির্ভর করে অনুলিপি বা সাফ করুন।

কোনও স্পেস বা ইওএফ পৌঁছে গেলে 4 টির বেশি গণনা হ্রাস করতে এবং চিঠিটি এড়িয়ে যাওয়ার জন্য কিছু জাগলিং করা হয় Jএবং তারপরে ডিকোডেড চরিত্রটি মুদ্রিত হয়।


এটি বাইট কাউন্টে জাভা বাস্তবায়নের খুব কাছাকাছি ... টুপি আপনার কাছে
hstde

এটি একটি অপরাধ যে এটির আমার দ্বিগুণ সমাধানের চেয়ে কম পয়েন্ট রয়েছে যা দ্বিগুণ হয়ে গেছে
আন্ডারগ্রাউন্ডোমোনাইল

পছন্দ করুন
মিচ শোয়ার্জ

3

পিএইচপি, 163 বাইট

<?php for(;$c=preg_replace('/(?<![AEIOU]).(?![AEIOU])/','',strtoupper($argv[++$i]));$j=min($d[79],4)+5*min($d[65],4),print range(A,Z)[$j+($j>8)])$d=count_chars($c);

আরও পঠনযোগ্য সংস্করণ:

<?php
for (
    ;
    $c = preg_replace(
        '/(?<![AEIOU]).(?![AEIOU])/',
        '',
        strtoupper($argv[++$i])
    );
    $j = min($d[79], 4) + 5 * min($d[65], 4),
    print range(A, Z)[$j + ($j > 8)]
)
    $d = count_chars($c);

পরীক্ষা:

$ php babytalk.php GLOOG KAKAAOOO ARGOOO OOOOOGUGUU
CODE
$ php babytalk.php oaka pooopaa gaau augu
GOLF
$ php babytalk.php Aoao U oOOAoa oaoAoo aoAoAOa
NAPPY
$ php babytalk.php GUG gAGaA gOougOou
ALE
$ php babytalk.php OOaGOG GoGOOoGoU gAA bLAA GOUGoOUgAIGAI
HELLO

3

জাভা 8, 272 266 251 249 বাইট

interface M{static void main(String[]i){String z="(?=[AEIOU])|(?<=[AEIOU])";for(String s:i[0].split(" ")){int a=s.split("(?i)A"+z+"A",-1).length-1,o=s.split("(?i)O"+z+"O",-1).length-1,t=(a>4?4:a)*5+(o>4?4:o);System.out.printf("%c",t>9?t+66:t+65);}}}

-6 বাইটস @ জোবা ধন্যবাদ ।
-1 বাইট জাভা 7 থেকে 8 এ রূপান্তর করা এবং 14 টি অতিরিক্ত বাইট মুদ্রণ-অংশ পরিবর্তন করে সংরক্ষণ করা হয়েছে।

ব্যাখ্যা:

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

interface M{                   // Class:
  static void main(String[]i){ //  Main method:
    String z="(?=[AEIOU])|(?<=[AEIOU])";
                               //   Regex-part for look-ahead or look-behind of vowels
    for(String s:i[0].split(" ")){  
                               //    Loop over the program-arguments
      int a=s.split("(?i)A"+z+"A",-1).length-1,
                               //     The amount of A's with adjacent vowels
          o=s.split("(?i)O"+z+"O",-1).length-1,
                               //     The amount of O's with adjacent vowels
          t=(a>4?4:a)          //     If `a` is larger than 4, just take 4, else take `a`
            *5                 //     Multiply it by 5
            +(o>4?4:o);        //     And add 4 if `o` is larger than 4, else take `o`
       System.out.printf("%c", //     Print a character:
        t>9?                   //      If `t` is larger than 9 (index of J)
         t+66                  //       Take character unicode (skipping J)
        :                      //      Else:
         t+65);                //       Take character unicode (prior to J)
    }                          //   End of loop
  }                            //  End of main-method
}                              // End of program

1
চ্যালেঞ্জটি বর্তমানে উল্লেখ করেছে যে আপনার "একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা [এসটিডিআইএন থেকে] ইনপুট নেয় এবং এটি [এসটিডিআউট] প্রিন্ট করে"। এর অর্থ বর্তমানে লিখিত ফাংশন উত্তরগুলির অনুমতি নেই।
CAD97

@ সিএডি 97 ধন্যবাদ, অতীতে পড়ুন কোনওভাবে। আমি আমার উত্তরটি সেই অনুযায়ী সম্পাদনা করেছি।
কেভিন ক্রুইজসেন

1
(? ঝ) বড় হাতের অক্ষরে স্ট্রিং ব্যবহার করার পরিবর্তে, কেস পরিবর্তিত Regex পতাকা s.split শুরুতে যোগ
জবা

2

পাইথন 3, 163 162 157 146 বাইট

import re
for W in input().upper().split():S=''.join(re.findall("[AEIOU]{2,}",W)).count;I=min(S('A'),4)*5+min(S('O'),4);print(end=chr(65+I+(I>9)))

2 এর চেয়ে বড় স্বরগুলির সমস্ত স্ট্রিং সন্ধান করতে রিজেক্স ব্যবহার করে, সর্বাধিক 4 দিয়ে আস এবং ওস গণনা করে এবং তারপরে মুদ্রণ করে।


2

এপিএল, 60

{⎕A[a+9<a←5⊥+/¨'ao'∊⍨¨⊂⍵/⍨0(,∨,⍨)2∧/⍵∊'aeiou']}¨' '(≠⊂⊢)819⌶

নোট করুন যে OIO ← 0 এবং ⎕ML ← 3

উদাহরণ:

fn←{⎕A[a+9<a←5⊥+/¨'ao'∊⍨¨⊂⍵/⍨0(,∨,⍨)2∧/⍵∊'aeiou']}¨' '(≠⊂⊢)819⌶
fn 'Aoao U oOOAoa oaoAoo aoAoAOa'
NAPPY

কাজ করে Dyalog 15.0 , যেহেতু এটি সংস্করণ যা 819⌶ একটি স্ট্রিং ছোট হাতের অক্ষরে চালু করা হয় না।


আপনি কি কে ছাড়ছেন না তা নিশ্চিত?
ফ্রাউনফ্রোগ


1

আর, 261 বাইট

আমি মনে করি কেবল এই কাজটি করার জন্য আমি অনেক বেশি সময় ব্যয় করেছি এবং আমি বিশ্বাস করি এটি একটি অহেতুক জটিল সমাধান, যদিও এটি কার্যকর হয়। স্টিডিন থেকে ইনপুট নেয়, স্ট্রিংটি উদ্ধৃতিতে আবদ্ধ হওয়া জরুরী।

x=el(strsplit(toupper(scan(,""))," "))
cat(apply(sapply(c("A","O"),function(y)sapply(sapply(regmatches(x,gregexpr("[AEIOU]{2,}",x,)),paste,collapse=""),function(s)min(sum(el(strsplit(s,""))%in%y),4)))+1,1,function(z)t(matrix(LETTERS[-10],5))[z[1],z[2]]),sep="")

চারটি নেস্টেড- applyফ্যামিলির ব্যবহার তাত্ত্বিকভাবে mapplyপরিবর্তে এর ব্যবহার করে কেবলমাত্র দুটিতে হ্রাস করা যেতে পারে । তবে ইনপুটগুলি mapplyএকই দৈর্ঘ্যের হবে না বলে সংক্ষিপ্ততরটি পুনর্ব্যবহার করা হয় যা জিনিসগুলিকে জটিল করে তোলে এবং আমি কোনও কার্যকরী সমাধান বের করতে পারি না।

যদি কেউ আগ্রহী হন তবে আমি পরে একটি দালাল ব্যাখ্যা যুক্ত করব।

সমস্ত পরীক্ষার কেস আর-ফিডালে চেষ্টা করে দেখুন

দয়া করে মনে রাখবেন যে এই সংস্করণটি স্টিনের পরিবর্তে ফাংশন আর্গুমেন্ট হিসাবে ইনপুট নেয় কারণ scanআর-ফিডলটিতে কাজ করে না। তদ্ব্যতীত, এটি পড়া সহজতর করার জন্য একটি নতুন লাইন যুক্ত করা হয়েছে।


0

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

import re;f,b,v,n,r,l,t,g,a,o=re.findall,input().lower(),'aeiou',list(range(26)),'[aeiou]','abcdefghiklmnopqrstuvwxyz','',len,'a','o';del n[9],
for w in b.split():
 O,A=g(f(o+r,w))+g(f(r+o,w)),g(f(a+r,w))+g(f(r+a,w))
 if O>4:O=4
 if A>4:A=4
 t+=l[A*5+O]
print(t)

কম গল্ফড (মন্তব্যগুলি সংক্ষিপ্ত কোডের ভেরিয়েবলগুলি):

import re
findAll = re.findall #f
babyTalk = input('Baby Talk: ').lower() #b
vowels = 'aeiou' #v
numbers = list(range(26)) #n
del numbers[9]
letters = 'abcdefghiklmnopqrstuvwxyz' #l
finalText = '' #t
length = len #g
regex = '[aeiou]' #r
o = 'o' #o
a = 'a' #a
for word in babyTalk.split(): #w in b
 Os = len(findAll('o[aeiou]', word)) + len(findAll('[aeiou]o', word)) #O
 As = len(findAll('a[aeiou]', word)) + len(findAll('[aeiou]a', word)) #A
 if Os > 4: Os = 4
 if As > 4: As = 4
 print(As, Os)
 finalText += letters[As*5+Os]
 print(finalText)

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


এটি একটি শব্দের জন্য কাজ করে না blaoaoaog: ইন্টারলেস্টেড স্বরগুলি একাধিকবার গণনা করা হয়, zকখন হওয়া উচিত তা দেওয়া t(যদিও এটি ঠিক কাজ করে aaaoooতবে আমি বুঝতে পারি না কেন ....)
CAD97

@ CAD97 আপনি কি বলছেন যে aooa পি হওয়া উচিত, এন নয়?
nedla2004

উদ্দেশ্যহীন; aooa== (2,2) == n, aoaoao== (3,3) ==t
CAD97

কেবল এটি পরীক্ষা করা হয়েছে এবং সিএডি সঠিক, gaoaoaogটি এর পরিবর্তে জেড প্রিন্ট করে I আমি মনে করি এটি কারণ আপনার রেজেক্স বাছাই করছে [ao,oa,ao,oa,ao], যা গণনা করে 5,5, তারপর 4,4জেড মুদ্রণ করে তা সীমাবদ্ধ করে দেয়
ফ্লিপট্যাক

@ Flp.Tkc আপনি কীভাবে এটি ঠিক করতে জানেন? আমি রেইগেক্সে খুব নতুন।
nedla2004

0

কোটলিন , 221 209 বাইট

এখন অনেক বেশি কুৎসিত এবং ধীর, সব 11 বাইট নামে

readLine()!!.toLowerCase().split(" ").map{fun
c(c:Char)=Regex("([aeiou]{2,})").findAll(it).fold(0){a,b->a+b.value.count{it==c}}.let{if(it>4)4 else it}
(('A'..'I')+('K'..'Z'))[c('a')*5+c('o')]}.forEach(::print)

BabyTalk.ktsস্ক্রিপ্ট হিসাবে চালানোর জন্য এটিকে কোনও ফাইল (উদা। ) এ সংরক্ষণ করুন । অথবা, উপরের কোডটি fun main(z:Array<String>)=আরও 26 টি বাইটের জন্য সাধারণভাবে সংশোধন এবং সংকলন করা যেতে পারে ।

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

ইন্ডেন্টযুক্ত:

readLine()!!
    .toLowerCase()
    .split(" ")
    .map {
        fun c(c: Char) =
            Regex("([aeiou]{2,})")
                .findAll(it)
                .fold(0) {
                    a, b ->
                    a + b.value.count { it == c }
                }
                .let { if (it > 4) 4 else it }
        (('A'..'I') + ('K'..'Z'))[c('a') * 5 + c('o')]
    }
    .forEach(::print)

0

পিএইচপি, 124 129 121 120 125 বাইট

for(;$s=$argv[++$i];print chr((8<$O+=5*$A)+$O+65))for($k=$A=$O=0;$c=_&$s[$k++];$p=$c)$$c+=$$c<4&!trim($p.$s[$k]&__,AEIOU)[1];

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

ভাঙ্গন

for(;$s=$argv[++$i];            # loop $s through arguments
    print chr((8<$O+=5*$A)+$O+65)   # 3. map A and O counts to letter, print
)
    for($k=$A=$O=0;                 # 1. reset A and O counters
        $c=$s[$k++]&_;              # 2. loop $c through characters:
        $p=$c)                          # 2. remember current character as previous
        $$c+=                           # 1. increment counter for $c, if ...
            $$c<4&                          # it is < 4 and ...
            !trim($p.$s[$k]&__,AEIOU)[1];   # ... previous or next char is vowel

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