পরের কানা আউটপুট


21

জাপানি কানা অক্ষরগুলি জাপানি ভাষার একটি শব্দের সাথে মিলে যায়। ん ( এন ) ব্যতীত, প্রতিটি অন্যান্য কানাতে একটি ব্যঞ্জনবর্ণ এবং স্বর অংশ থাকে part জাপানি কানাতে একটি প্রাকৃতিক অর্ডার রয়েছে, "বর্ণমালার ক্রম", যা সাধারণত 10 বাই 5 টেবিলের মধ্যে সাজানো থাকে:

   |   a    i    u    e    o
-----------------------------
*  |   a    i    u    e    o
k  |  ka   ki   ku   ke   ko
s  |  sa   si   su   se   so
t  |  ta   ti   tu   te   to
n  |  na   ni   nu   ne   no
h  |  ha   hi   hu   he   ho
m  |  ma   mi   mu   me   mo
y  |  ya        yu        yo
r  |  ra   ri   ru   re   ro
w  |  wa                  wo

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

চ্যালেঞ্জ

ইনপুট উপরে তালিকাভুক্ত কানা কোন ভাল থাকবে, কারণ বাদে Wo । আপনার প্রোগ্রাম বা ফাংশনটি পরবর্তী কানাটিকে বাম-থেকে-ডানদিকে, উপরে থেকে নীচে পড়ার ক্রম হিসাবে আউটপুট করা উচিত, যেমন:

Input       Output
------------------
a     ->    i
i     ->    u
o     ->    ka
ke    ->    ko
so    ->    ta
ni    ->    nu
ya    ->    yu
yu    ->    yo
wa    ->    wo
wo    ->    (undefined behaviour)

Alচ্ছিক একক ট্রেলিং নিউলাইনটি বাদ দিয়ে আউটপুটে কোনও শীর্ষস্থানীয় বা পিছনের শ্বেত স্থান থাকতে হবে না।

এটি , তাই বাইটে প্রোগ্রামের আকার হ্রাস করা।

অতিরিক্ত নোট


3
আমি মনে করি যে হেপবার্নের ব্যতিক্রমগুলি ব্যবহার করা এবং কোন লুপ এ চলেছে তা woরূপান্তর করা আরও মজাদার nহবে a
জানুয়ারী

উত্তর:


16

রেটিনা , 54 53 বাইট

T`au`ie`y.
wa
we
T`\oeuia`ao
T`ko`stn\hmyr\w`.a
^a
ka

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

ব্যাখ্যা

Wooo, আজকের 0.7.2 রিলিজ থেকে আরও বেশি বৈশিষ্ট্য দেখায়। :) ( প্রকাশটি প্রায় 7 ঘন্টা এই চ্যালেঞ্জের পূর্বাভাস দেয় ))

T`au`ie`y.

এটি একটি অনূদিত যা প্রতিস্থাপন aকরে iএবং এর uসাথে প্রতিস্থাপন করে eতবে কেবলমাত্র ম্যাচগুলিতে y.। এর উদ্দেশ্য হ'ল ফাঁকগুলি এড়াতে যথাক্রমে চিকিত্সা করা yaএবং yuপছন্দ করা yiএবং ye

wa
we

প্রতিস্থাপন waসঙ্গে weপাশাপাশি যে ফাঁক এড়িয়ে যেতে।

T`\oeuia`ao

এখানে নতুন বৈশিষ্ট্যটি রয়েছে। অক্ষরের সেটগুলি ঘোরানোর সময়, "অনুলিপি" থেকে "থেকে" এবং "থেকে" সেটটি প্রায় অভিন্ন হয়। সুতরাং এখন আমরা oঅন্য সেটটি উল্লেখ করার জন্য (ব্যাকস্ল্যাশ ছাড়াই) পেয়েছি , যা আমাদের কিছু সদৃশতা থেকে মুক্তি পেতে সহায়তা করে। \oশুধু একটি আক্ষরিক ঘোরা oযে ক্ষেত্রে। সুতরাং দুটি সেট প্রসারিত:

oeuia
aoeuia

aদ্বিতীয় সেটের বহিরাগতটিকে উপেক্ষা করা হবে এবং প্রত্যাশার মতো স্বরগুলি চক্রাকারে প্রতিস্থাপন করা হবে।

T`ko`stn\hmyr\w`.a

এটি ব্যঞ্জনবর্ণদের জন্য একই জিনিস করে oতবে প্রথম সেটটিতে ব্যবহার করা হয় (কেবলমাত্র আমরা পারি ...)। hএবং wপালানোর দরকার কারণ তারা অক্ষর শ্রেণি। প্রসারিত সেটগুলি হ'ল:

kstnhmyrw
stnhmyrw

.aপরিমিত সিলাবল এই অপারেশন যে শেষ a, অর্থাত্ ঐ যে টেবিলের পরবর্তী লাইনে মোড়ানো।

^a
ka

শেষ পর্যন্ত, আমরা একটি একক এর aসাথে প্রতিস্থাপন করি ka, কারণ সেই ক্ষেত্রেটি পূর্বের লিখিত লিপি লিখিতকরণ দ্বারা পরিচালনা করা যায় না।


চ্যালেঞ্জ পোস্ট হওয়ার পরে কি আপনার ভাষার কোনও সংস্করণ প্রকাশ করা প্রতিযোগিতা থেকে আপনার প্রবেশকে অযোগ্য ঘোষণা করে না ? (অনুমান করুন যে আমি কেন অন্য জায়গায় এটি সম্পর্কে জিজ্ঞাসা করেছি
অ্যালেক্স

এই চ্যালেঞ্জ পোস্ট হওয়ার আগে @ অ্যালেক্স আমি সেই সংস্করণটি প্রকাশ করেছি।
মার্টিন এন্ডার

ঠিক আছে. আমার ক্ষমা। আপনার সম্পাদনা এটিকে অন্যথায় প্রদর্শিত হতে পারে। আমি আপনার প্রকাশের তালিকাটি কেবল যাচাই করেছি (অভিযোগটি চারপাশে অভিযোগ করার আগে সম্ভবত এটি করা উচিত ছিল)।
অ্যালেক্স

5

রুবি, 105

->n{a=['wo','wa']
'rymhntsk '.chars{|c|a+='*o *e *u *i *a'.tr(?*,c).split}
a[8..10]='yu'
a[a.index(n)-1]}

পরীক্ষার প্রোগ্রামে মন্তব্য করা হয়েছে

f=->n{a=['wo','wa']                     #initialize array to last line of table, begin to build table backwards                                
  'rymhntsk '.chars{|c|                 #for each consonant, 
    a+='*o *e *u *i *a'.tr(?*,c).split  #perform a sustitution to get that line of table in string form,  
  }                                     #then split into array at spaces and append to a
  a[8..10]='yu'                         #substitute 3 elements ye yu yi with 1 element yu
  a[a.index(n)-1]                       #return element before argument (array is backwards.)
}

puts f[gets.chop]

আপনি এর সাথে কয়েকটি বাইট সংরক্ষণ করতে পারেন a=%w{wo wa}
জর্ডান

এছাড়াও: "rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}যদিও আমার কাছে এক সন্দেহজনক সন্দেহ থাকলেও এটি আরও গল্ফ হতে পারে।
জর্দান

5

জিএনইউ সেড, 65

মন্তব্য স্কোর অন্তর্ভুক্ত নয়:

:                        # Define unnamed label
y/aiueo/iueoa/           # Rotate vowels
/a/y/kstnhmyr/stnhmyrw/  # If at end of row, rotate consonants
s/^a/ka/                 # If at end of 1st row, prefix a "k"
/[yw][ie]\|wu/b          # If one of the invalid values, jump back to label and redo

ওহে, এটি অনেকগুলি @ মার্টিনের রেটিনা জবাবের মতো দেখতে শুরু হয়েছে (তবে অবশ্যই এটি দীর্ঘ)।


5

পাইথ, 42 40 38 বাইট

s.r]z.DrR6*" kstnhmyrw""aiueo"CM"$&./0

স্বর এবং ব্যঞ্জনবর্ণের মধ্যে এটি বাহ্যিক পণ্য গ্রহণ করে এবং প্রতিটি সংখ্যার ক্রম অনুসারে উপাদানগুলি সরিয়ে দেয় $&./0। তারপরে এটি ইনপুট পরে উপাদান আউটপুট।

@J.DrR6*" kstnhmyrw""aiueo"CM"$&./0"hxJz    Implicit: z=input()
       *" kstnhmyrw""aiueo"                 Outer product: [' a',...,' o','ka',...]
    rR6                                     Strip each string—'a'~'o' now single letters
                           CM"$&./0"        Map ord onto the string: [36,38,46,47,48]
  .D                                        Remove elements at those indices.
 J                                          That's the list of kana; assign it to J
                                     xJz    Find the index (x) of z in J,
                                    h       add one,
@J                                          and access J at that index.

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


বাহ, এই ভাষা পাগল!
একজন শিক্ষার্থী

3

টিএক্সআর লিস্প, 135 127 124 91 বাইট

(ret[(memqual @1(diff(maprod(op trim-str`@1@2`)" kstnhmyrw""aiueo")'#"yi ye wi wu we"))1])

চালান:

1> (ret[(memqual @1(diff(maprod(op trim-str`@1@2`)" kstnhmyrw""aiueo")'#"yi ye wi wu we"))1])
#<interpreted fun: lambda (#:arg-1-0208 . #:arg-rest-0207)>
2> [*1 "a"]
"i"
3> [*1 "o"]
"ka"
4> [*1 "ki"]
"ku"
5> [*1 "mu"]
"me"
6> [*1 "ya"]
"yu"
7> [*1 "yo"]
"ra"
8> [*1 "wa"]
"wo"

1

বাশ + সেড, 83

echo {,k,s,t,n,h,m,y,r,w}{a,i,u,e,o}|sed -E "s/[yw][ie]|wu//g;s/.*\b$1 +//;s/ .*//"
  • এক লাইনে পূর্ণ টেবিল তৈরি করতে ব্রেস প্রসারণ
  • এগুলি
    • অপসারণ yi, ye, wi, wuএবংwe
    • ইনপুট এন্ট্রি সহ সমস্ত কিছু সরিয়ে ফেলুন (তবে পরবর্তী প্রবেশ নয়)
    • পরের প্রবেশের পরে সবকিছু মুছে ফেলুন

1

জাভাস্ক্রিপ্ট, 145 162 131 118 বাইট

x=>(d=" kstnhmyrw".replace(/./g,"$&a$&i$&u$&e$&o").replace(/ |yi|ye|wiwuwe/g,"").match(/[^aiueo]?./g))[d.indexOf(x)+1]

এটি স্বীকার করুন, আপনি এই সমস্যাটি সমাধানের জন্য আরও হাস্যকর সমাধানের কল্পনা করতে পারেননি;) ঠিক আছে, এটি আরও আকর্ষণীয় উপায়ে করেছেন।

ডেমো:

function p(x) {
  return (d=" kstnhmyrw".replace(/./g,"$&a$&i$&u$&e$&o") //build the sequence of kana, regex rulez!
        .replace(/ |yi|ye|wiwuwe/g,"")                   //remove the spaces and excess kana
        .match(/[^aiueo]?./g))[d.indexOf(x)+1]           //split it into array using regex and get the index of input in it
}

alert(p(prompt()))


@ এসপি 3000 ওহ, এটি খুব দুঃখের বিষয়, এরপরে আপনার উল্লেখ করা উচিত যে এই অতিরিক্ত (পিছনে / শীর্ষস্থানীয়) জায়গাগুলির অনুমতি নেই।
নিকেল

@nicael আমি বৈশিষ্ট ইঙ্গিত কিছু যে তারা দেখতে না হয় বর্তমানে অনুমোদিত।
মার্টিন এন্ডার

@ Sp3000 স্থির ব্যবধান।
নিকেল

1

জাপট, 75 70 68 বাইট

X=" kstnhmyrw"£"aiueo"®+X w} r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU

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


বেশ সুন্দর! আমি এটিকে আরও গল্ফ করার চেষ্টা করেছি, তবে আমি কেবল 3 বাইট কেটে ফেলতে পারি:X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
ETH প্রোডাকশনগুলি

@ হ্যাঁ, এবং আপনি এতে একটি অতিরিক্ত জায়গা পেয়েছেন } }:)
নিকেল

ওহ, ঠিক আছে, আমি ভুলে গিয়েছিলাম যে এটি স্বয়ংক্রিয়ভাবে যুক্ত হয়েছিল :)
ETH প্রোডাকশনগুলি

@ অন্য চেহারা, আমরা আপনার যাদু শর্টকাটগুলির সাথে এটি দুটি বাইট সংক্ষিপ্ত পেতে পারি: ডি
নিকেল

অপেক্ষা করুন, যে আসলে কাজ করে? ভাল, আপনি আমাকে ছাড়িয়ে গেছেন;)
ETH প্রোডাকশনগুলি

1

হাস্কেল, 114 96 বাইট

f"ya"="yu"
f"yu"="yo"
f"wa"="wo"
f x=snd(span(/=x)[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"])!!1

[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]"গর্তগুলি" সহ সমস্ত কানার একটি তালিকা। আমি ইনপুট কানা আগে এবং ইনপুট কানা থেকে শেষ অবধি তালিকায় অংশটি ভাঙ্গি। দ্বিতীয় অংশ থেকে আমি দ্বিতীয় উপাদানটি বেছে নিই। "ছিদ্র" এর চারপাশে ব্যতিক্রম পৃথক কেস দ্বারা ধরা পড়ে।

সম্পাদনা করুন: @ এক্সনর span18 টি বাইট সংরক্ষণ করেছে যা ব্যবহারের ধারণা নিয়ে আসে ।


কিছু দেখার (snd$span(/=x)k)!!1জন্য কাজ না চান ?
xnor

@ এক্সনর: এখন যে আমি এটি দেখতে পাচ্ছি তা স্পষ্ট। অনেক ধন্যবাদ!
নিমি

0

পার্ল 6, 105 বাইট

.[.first(@*ARGS[0],:k)+1].say with (" kstnhmyrw".comb X~ <a e i o u>).grep(* !~~/[y|w][i|e]|wu/)».trim

এটি আমার প্রথম যেতে যেতে যতটা তত সংক্ষিপ্ত, পরে আমার এটিতে আরও একটি ফাটল পড়তে পারে তবে আমি এ সম্পর্কে বেশ ভাল অনুভব করি।


0

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

s=>s>"yt"?"yo":s=="ya"?"yu":s=="wa"?"wo":(m=[].concat(...["",..."kstnhmyrw"].map(c=>[..."aiueo"].map(v=>c+v))),m[m.indexOf(s)+1])

ব্যাখ্যা

s=>

  // Hardcode "yu", "ya" and "wa"
  s>"yt"?"yo":
  s=="ya"?"yu":
  s=="wa"?"wo":

  // Generate table
  (m=[].concat(...                                   // flatten the array of arrays
    ["",                                             // first consonant is blank
    ..."kstnhmyrw"].map(c=>[..."aiueo"].map(v=>c+v)) // combine each consonant and vowel
  ))[m.indexOf(s)+1]                                 // return the next sound

পরীক্ষা


0

পার্ল 6, 96 বাইট

{my @a=(" kstnhmyrw".comb X~ <a i u e o>).grep({!/[y|w][e|i]|wu/})>>.trim;@a[1+@a.first($_,:k)]}

0

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

L=[(x+y).lstrip()for x in' kstnhmyrw'for y in'aiueo'if x+y not in'yiyewiwuwe']
print L[L.index(input())+1]

'he'উদাহরণ হিসাবে উদাহরণস্বরূপ ইনপুটটি আবদ্ধ হওয়া প্রত্যাশা করে


0

র‌্যাকেট 151 বাইট

(second(member s '(a i u e o ka ki ku ke ko sa si su se so ta ti tu te to na
ni nu ne no ha hi hu he ho ma mi mu me mo ya yu yo ra ri ru re ro wa wo)))

Ungolfed:

(define (f s)
  (second
   (member s
           '(a i u e o ka ki ku ke ko sa si su se so ta ti tu te to na ni nu ne
               no ha hi hu he ho ma mi mu me mo ya yu yo ra ri ru re ro wa wo))))

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

(f 'a)
(f 'i)
(f 'o)
(f 'ke)
(f 'so)
(f 'ni)
(f 'ya)
(f 'yu)
(f 'wa)

আউটপুট:

'i
'u
'ka
'ko
'ta
'nu
'yu
'yo
'wo

'ডাব পাঠানো হলে একটি ত্রুটি বার্তা রয়েছে।


0

সি, 138 135 বাইট

char*s="aiueokstnhmyrw";i,j;k(*v){j=strchr(s,*v>>8)-s;i=strchr(s,*v)-s;j=i<4?i++:j<4?j-~(2520%i&3):!++i;printf("%c%c",s[i],i<5?:s[j]);}

Wandbox

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