ভাষা অনুবাদক


10

নিম্নলিখিত টেবিলের (লিঙ্কযুক্ত নিবন্ধ থেকে অভিযোজিত) * বর্ণিত সংশ্লিষ্ট "টিউটি শব্দ" দ্বারা প্রতিটি অক্ষর প্রতিস্থাপন করে পাঠ্যটি টিউটি ভাষার একটি লিখিত সংস্করণে অনুবাদ করা যেতে পারে * :

a  e        h  hash     o  o        u  yu
b  bub      i  ay       p  pup      v  vuv
c  kut      j  jag      q  kwak     w  waks
d  dud      k  kak      r  rut      x  eks
e  i        l  lul      s  sus      y  yak
f  fuf      m  mum      t  tut      z  zuz
g  jug      n  nun            

* Exceptions: 
(1) Upper case letters have corresponding TUT words in upper case.
(2) A doubled letter becomes 'skwer' ('SKWER') followed by the TUT word for that letter.
    - An n-fold letter is treated as a number of doubles, followed by a single if needed.
    - To be considered a double or n-fold letter, the letters must be in the same case.
(3) 'rut' ('RUT') is replaced by 'rud' ('RUD') if immediately followed by 'dud' ('DUD'). 

নিম্নলিখিত আই / ও আচরণ সহ একটি প্রোগ্রাম লিখুন:

ইনপুট (স্টিডিন থেকে): একটি বাইনারি (0/1) সূচক i এবং একটি ASCII স্ট্রিং গুলি

  • যদি i = 0 হয় তবে এর মধ্যে কোনও ASCII পাঠ্য থাকতে পারে।
  • তাহলে আমি = 1 তারপর গুলি কিছু বৈধ ইনপুট জন্য ছি! ভাষা আউটপুট হতে হবে।

আউটপুট (stdout থেকে): একটি বাইনারি (0/1) সূচক j এবং একটি ASCII স্ট্রিং টি

  • তাহলে আমি = 0 তারপর = 1 এবং T এর অনুবাদ গুলি করার ছি! ভাষা।
  • যদি i = 1 হয় তবে j = 0 এবং t হ'ল TUT ভাষা থেকে s এর অনুবাদ ।
  • কোনও বৈধ ইনপুটের জন্য, প্রোগ্রামটিকে তার নিজের আউটপুটে প্রয়োগ করতে অবশ্যই আসল ইনপুটটি পুনরুত্পাদন করতে হবে; ie, প্রোগ্রাম ( প্রোগ্রাম ( i , গুলি )) = ( i , গুলি )। ইনপুট এবং আউটপুট অবশ্যই একই ফর্ম্যাট থাকতে হবে।

স্কোরিং : স্কোরটি প্রোগ্রামের অক্ষরের সংখ্যা - সর্বনিম্ন স্কোর জয়।

উদাহরণ

(ক)

(0, 'Look for the birds.')
(1, 'LULskwerokak fuforut tuthashi bubayruddudsus.')

(খ)

(0, '"Mrs. Hogwallop up and R-U-N-N-O-F-T."')
(1, '"MUMrutsus. HASHojugwakseskwerlulopup yupup enundud RUT-YU-NUN-NUN-O-FUF-TUT."')

( )

(0, 'QWX WWW Rrrrd deeeeep')
(1, 'KWAKWAKSEKS SKWERWAKSWAKS RUTskwerrutruddud dudskweriskweriipup')

( d )

(0, 'aa AA aA Aa rd RD rD Rd')
(1, 'skwere SKWERE eE Ee ruddud RUDDUD rutDUD RUTdud)

(((সম্পর্কে একপাশে উচ্চারণ: স্বরবর্ণ (জন্য ছি! শব্দ e, i, ay, o, yu- may অর্থাত, সঙ্গে মিত্রাক্ষরকারী () (ক, ই, আমি O, U) যখন বর্ণমালা আবৃত্তি স্বাভাবিক শব্দসমূহ প্রতিনিধিত্ব করতে অনুমিত হয় আমাকে, আমার কাটা, মেত্তমেত্ত) তিন বা আরো অক্ষর ছি! কথায়, চিহ্ন (। u, a, e) এ (কিন্তু, ব্যাট, বাজি হিসাবে শব্দ অনুমিত হয়) যথাক্রমে - এই জন্য হওয়া ASCII প্রতিস্থাপন হয় ( ʌ æ ɛ) লিঙ্কযুক্ত নিবন্ধে।)))


1
আমাদের কি দ্বিগুণ বড় হাতের অক্ষর সমর্থন করতে হবে? এর ছি! অনুবাদ কী AA, SKWEREবা skwerE? ত্রিগুণিত অক্ষরের কী হবে? এটা করা হয় wakswakswaks, skwerwakswaks, waksskwerwaks, অথবা এমনকি kyubwaks, অথবা আমরা চয়ন করতে পারেন?
জন ডিভোরাক

1
rrdঅনুবাদ করা উচিত skwerruddud; আমাদের কি এটাকে ছাড়তে দেওয়া হচ্ছে skwerrutdud?
জন ডিভোরাক

@ জনডভোরাক - হ্যাঁ, এটি দ্বিগুণ বর্ণগুলি হ্যান্ডেল করা উচিত, তা নির্বিশেষে যাই হোক না কেন। ইনপুট (0, 'এএ স্কুয়ের স্কুয়ারেই') এর আউটপুট থাকতে হবে (1, 'ই সুসকাকওয়াকসিরুটি সুস্কাক্বাক্সরুতি')। ইনপুটস (1, 'এএ') এবং (1, 'স্কওয়ারই') বৈধ নয় কারণ 'এএ' এবং 'স্কোয়ার' কোনও বৈধ ইনপুট আউটপুট হিসাবে দেখা যায় না। ইনপুট (1, 'SKWERE') এর আউটপুট থাকতে হবে (0, 'EE')। তিন বা ততোধিক অক্ষরের একটি স্ট্রিং কয়েকটি সংখ্যক দ্বিগুণ হিসাবে গণ্য করা উচিত, সম্ভবত তার পরে একটি একক। ইনপুট (0, 'rrd') এর আউটপুট থাকতে হবে (1, 'স্কেররুদ্দুদ')।
মাঝামাঝি

আহ ... কিভাবে 0,"AA"অনুবাদ করে 1,"ee"? হিসাবে 1,"SKWERE", আমি ধরে নিয়েছি আপনি বোঝানো হয়েছে 0,"AA", না 0,"EE"
জন ডিভোরাক

1
@psxls - আমি (0, rd_RD_rD_Rd) -> (1, rudud_RUDDUD_rutDUD_RUTdud) এবং (0, aa_AA_aA_Aa) -> (1, skwere_SKWERE_eE_Ee) চেয়েছি। রুল (3) ছি! শব্দ 'skwere' এবং "SKWERE 'থেকে প্রযোজ্য।
মাঝামাঝি

উত্তর:


6

রুবি, 310 311 টি অক্ষর

h=Hash[(?a..?z).zip %w{e bub kut dud i fuf jug hash ay jag kak lul mum nun o pup kwak rut sus tut yu vuv waks eks yak zuz}]
h["rd"]="ruddud"
h.keys.each{|k|h[k[0]+k]="skwer"+h[k]}
h.keys.each{|k|h[k.upcase]=h[k].upcase}
h=h.invert if b=getc==?1
i=gets
print b ?0:1;(k=i;k=k.chop until h[k]||!k[1];$><<(h[k]||k);i[k]="")until i==""

সঠিকভাবে পরিচালনা করে:

  • স্কোয়ার্ড আপারকেস (পুনরাবৃত্তিগুলি মার্জ করে 18 টি অক্ষর অর্জন করে)
    • যদি AAরূপান্তরিত হয় তবে skwerEলাইনগুলি # 3 এবং # 4 অদলবদল করুন
    • আমিও অনুমান aAএবং Aaসেটিকে যেতে হবে eEএবং Eeযথাক্রমে
  • rrd `স্কওয়াররুদ্দুতে অনুবাদ করুন (আনফিক্স 3 টি অক্ষর লাভ করে)
  • কিউবে প্রথম জোড়াটি বর্গ হিসাবে প্রকাশিত হয়। rrrdমধ্যে সক্রিয় skwerrutruddudrrrrdহয়েskwerrutskwerruddud
  • আউটপুট এখন একটি বৈধ ইনপুট। এটি প্রকৃতপক্ষে, অনুমান দ্বারা প্রয়োজনীয়
  • ইনপুট টার্মিনেটর হিসাবে নিউলাইন ব্যবহার করে

ইনপুটটির জন্য সূচক এবং স্ট্রিংয়ের মধ্যে কোনও নতুন লাইন থাকা দরকার না, আউটপুট এটি সেখানে রাখে (ঠিক করুন: 1 অক্ষর)।STDIN এর সাথে মেশানো রোধ করতে এই মুহুর্তে কনসোল আউটপুট দমন করা। আনফিক্স মুক্ত, এটি সামান্য কিছুটা খারাপ।

উদাহরণ ইনপুট:

0Hello

আউটপুট:

1
HASHiskwerlulo

আমি একই ধরণের জন্য ইনপুট এবং আউটপুট প্রয়োজন হবে কিনা তা সম্পর্কে শূন্য ছিলাম , তবে প্রশ্নটিতে এটি পরিষ্কার ছিল না, তাই ... এই উত্তরটি আমার কাছে ভাল দেখাচ্ছে (এখন পর্যন্ত - আমি শীঘ্রই উত্তরের উপর কয়েকটি পরীক্ষা চালাব )।
মাঝামাঝি

আমি কেন জানি না, কিন্তু আমার কাছে আপনার প্রোগ্রাম রান - উভয় অনলাইন এবং বন্ধ - শুধুমাত্র যদি getcসঙ্গে পূর্বনির্ধারিত STDIN.(ছয় অক্ষর)।
মাঝামাঝি

আমি jRuby IRB 1.7.5 (2.0.0) ব্যবহার করছি এবং এটি আমাকে কেবল একটি সতর্কতা দেখায়। আপনি কোন ভার্শন ব্যবহার করছেন?
জন ডিভোরাক

আমি মানচিত্র তৈরি করতে শর্টহ্যান্ড পছন্দ করি। আমি শুধু এটি সম্পূর্ণরূপে অন্তর্ভুক্ত। এটি অসম্ভব করে তোলে যে আমি এটি বীট করব।
জোহানেস কুহ্ন

1
@ আমি বিশ্বাস করি যে ইনপুট / আউটপুট প্রয়োজনীয়তা পরিষ্কার ছিল: For any valid input, applying the program to its own output must exactly reproduce the original input; i.e., program (program (i, s)) = (i, s).তবে এটি ঠিক করতে কেবল 1 টি অক্ষর লাগবে।
জোহানেস কুহ্ন

3

পার্ল, 453 443 309 307 303 299

($x,$_)=split//,<>,2;@x{a..z,rd}=(e,bub,kut,dud,i,fuf,jug,hash,ay,jag,kak,lul,mum,nun,o,pup,kwak,rut,sus,tut,yu,vuv,waks,eks,yak,zuz,ruddud);$x{$_ x2}=skwer.$x{$_}for a..z;$x{uc$_}=uc$x{$_}for keys%x;%x=reverse%x if$x;$z=join"|",sort{length$b<=>length$a}keys%x;s/\G(.*?)($z)/$1$x{$2}/g;print!$x+0,$_

পরীক্ষার কেস:

আমি ওপিতে সরবরাহিত (ক), (খ), (সি) এবং (ডি) পরীক্ষার ক্ষেত্রে সফলভাবে পরীক্ষা করেছি।

একটি * কিছুটা * আরও পঠনযোগ্য সংস্করণ:

($x,$_)=split//,<>,2;
@x{a..z,rd}=(e,bub,kut,dud,i,fuf,jug,hash,ay,jag,kak,lul,mum,nun,o,pup,kwak,rut,sus,tut,yu,vuv,waks,eks,yak,zuz,ruddud);
$x{$_ x2}=skwer.$x{$_}for a..z;
$x{uc$_}=uc$x{$_}for keys%x;
%x=reverse%x if$x;
$z=join"|",sort{length$b<=>length$a}keys%x;
s/\G(.*?)($z)/$1$x{$2}/g;
print!$x+0,$_

1
নিস! কিছু ভাল পরীক্ষার কেস যাচাই করার জন্য, মনে হয় আমার অনেক কাজ করার আছে! আমি তোমার এ দ্রুত বর্ণন ছিল করেছি এবং আমি মনে করি আপনি ব্যবহার barewords পরিবর্তে qw (পরিবর্তন বন্ধ কয়েক বাইট কোপ করতে qw(bub kut ... yak zuz)করতে (bub,kut ... yak,zuz)), এছাড়াও আপনি প্রতিস্থাপন করতে পারেন keys%xসঙ্গে @b(যেহেতু আপনি কি জানেন কি কারণে হয় $x)। আরও তিনটি সংরক্ষণের জন্য একটি ছোট পরিবর্তন করতে $1eq uc($1)হবে uc$1eq$1। আপনাকে সেই অতিরিক্ত বাইটের জন্য প্রিন্টের +আগে ফেলে দিতে পারলে !আপনাকে 443 এ নিয়ে যেতে পারে Hope আশা করি এগুলি সবই বৈধ, আমি পরীক্ষার সীমাবদ্ধ পরীক্ষা করেছি!
ডোম হেস্টিংস

হুম, uc$1eq$1হতে পারে uc$1 eq$1, তবে আমি নিশ্চিত নই ... দুঃখিত যদি ভুল হয়!
ডোম হেস্টিংস

টিপস জন্য ধন্যবাদ ডম! আপনি আমাকে 10 অক্ষর বাঁচিয়েছেন। তবুও উন্নতির অবকাশ আছে, আমি আবার কাজে ফিরে যাব .. :)
psxls

2

এপিএল (ডায়ালগ) (372)

আপনি সত্যিই বলতে পারেন যে এপিএলটিতে অন্তর্নির্মিত স্ট্রিং হ্যান্ডলিং ফাংশন নেই (জেনেরিক অ্যারেগুলি ব্যতীত)। আমার নিজের লিখতে হয়েছিল tolower(এটি L)। মাল্টিলাইন ডায়ালগ এপিএল হিসাবে সর্বদা হিসাবে এটি পরীক্ষা করতে এটি সম্পাদনা উইন্ডোতে পেস্ট করুন এবং তারপরে এটিকে কল করুন ( T)।

T
Q←⎕UCS
L←{Q(Q⍵)+32×⍵∊⎕A}
Z←{⎕←⊃z,.⍺⍺1⌽z←⍵,' '}
w←L¨W←1↓¨W⊂⍨' '=W←' E BUB KUT DUD I FUF JUG HASH AY JAG KAK LUL MUM NUN O PUP KWAK RUT SUS TUT YU VUV WAKS EKS YAK ZUZ RUD SKWER'
⍞{⎕←~⍵:{U←L⍣(l←⍺∊L⎕A)
~l∨⍺∊⎕A:⍺
⍺=⍵:U⊃⌽W
'rd'≡L¨⍺⍵:U'RUD'
U⊃W[96-⍨Q+L⍺]}Z⍺
{'rR'∊⍨v←⊃⍺:v
(⊃⌽w)≡m←L⍺:⍵∇⍬
~w∊⍨⊂m:⍺
L⍣(⍺≡L⍺)⍨⎕A/⍨26↑≡∘m¨w}Z{~×⍴⍵:''
∨/H←⊃¨⍷∘(L⍵)¨w:(⊂l↑⍵),∇⍵↓⍨l←⍴⊃H/W
(⊂⊃⍵),∇1↓⍵}⍺}⎕

ব্যবহার:

      T
⎕:
0
"Mrs. Hogwallop up and R-U-N-N-O-F-T."     
1
"MUMrutsus. HASHojugwakseskwerlulopup yupup enundud RUT-YU-NUN-NUN-O-FUF-TUT."      
      T
⎕:
1
"MUMrutsus. HASHojugwakseskwerlulopup yupup enundud RUT-YU-NUN-NUN-O-FUF-TUT."      
0
"Mrs. Hogwallop up and R-U-N-N-O-F-T."       

2

টিসিএল, 395 394 392

set m { rd ruddud a e h hash o o u yu b bub i ay p pup v vuv c kut j jag q kwak w waks d dud k kak r rut x eks e i l lul s sus y yak f fuf m mum t tut z zuz g jug n nun ঙ skwer}
set m $m[string tou $m]
if [read stdin 1] {puts 0[regsub -all ঙ(.) [string map [lreverse $m] [gets stdin]] {\1\1}]} {puts 1[string map $m [regsub -all (.)\\1 [gets stdin] ঙ\\1]]}

মন্তব্য:

  • skwerruddudজন্য ব্যবহার করে rrd
  • skwereskwereeজন্য aaaaa

উদাহরণ ইনপুট:

0Hello

আউটপুট:

1HASHiskwerlulo

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

  • m শুরুতে একটি স্ট্রিং।
  • আমি এটি বড় হাতের মানচিত্র দিয়ে সন্তুষ্ট করি।
  • [স্ট্রিং ম্যাপ] আমার জন্য বেশিরভাগ স্টাফ করে (একটি তালিকা ব্যবহার করে, তাই যা কার্যকর বৈধ তালিকা ...)
  • দ্বিগুণ অক্ষরের জন্য regexp। একটি বিশেষ প্রতিস্থাপনের অক্ষর ( ) ব্যবহার করুন ।

বাঙালি আবুগিদা, আপনি কীভাবে এই চরিত্রটি বেছে নিয়েছিলেন?
কেয়া

\ufffiirc। আসলেই কিছু যায় আসে না। যে কোনও অ-অসি চরিত্র করত।
জোহানেস কুহ্ন

এটা ছিল \u999। যেমনটি আমি বলেছি, একমাত্র গুরুত্বপূর্ণ জিনিসটি ছিল: আসকি চরিত্রটি নয়।
জোহানেস কুহ্ন

@ জোহনেসকুহান এটি উদাহরণস্বরূপ (সি) ব্যর্থ হয়, ফিরে আসে 1KWAKWAKSEKS skwerWAKSWAKS RUTskwerrutruddud dudskweriskweriipup
psxls

@psxls যা সঠিক: A doubled letter is replaced by `skwer` followed by the TUT word for that letter.কোন উল্লেখ নেই SKWER
জোহানেস কুহ্ন

2

পার্ল 385

$t=e0bub0kut0dud0i0fuf0jug0hash0ay0jag0kak0lul0mum0nun0o0pup0kwak0rut0sus0tut0yu0vuv0waks0eks0yak0zuz;@t=split 0,$t."0\U$t";@s=(a..z,A..Z);while(<>){($-,$_)=split/ /,$_,2;@l{$-?@t:@s}=$-?@s:@t;if($-){for$@(@t){s/skwer$@/$@$@/gi}for$@(@t){s/$@/$l{$@}/g}s/(r)ud/$1/gi}else{s/(.)/$l{$1}||$1/ge;for$@(@t){$r=lc$@eq$@?"skwer":"SKWER";s/$@$@/$r$@/g}s/(ru)t(d)/$1$2$2/gi}$-=!$-;print"$- $_"}

সিনট্যাক্স হাইলাইটার এটিকে ঘৃণা করে ...

STDIN এ ইনপুট আশা করে, ফর্ম্যাটটি হ'ল 0 (or 1) String to convert here.:

0 Hello! # input
1 HASHiskwerlulo! # output

1 HASHiskwerlulo!
0 Hello!

0 Look for the birds.
1 LULskwerokak fuforut tuthashi bubayruddudsus.

1 LULskwerokak fuforut tuthashi bubayruddudsus.
0 Look for the birds.

0 "Mrs. Hogwallop up and R-U-N-N-O-F-T."
1 "MUMrutsus. HASHojugwaksaskwerlulopup yupup anundud RUT-YU-NUN-NUN-O-FUF-TUT."

1 "MUMrutsus. HASHojugwaksaskwerlulopup yupup anundud RUT-YU-NUN-NUN-O-FUF-TUT."
0 "Mrs. Hogwallop up and R-U-N-N-O-F-T."

সম্পাদনা : আমি এক্স এর অনুবাদ সহ একটি সমস্যা লক্ষ্য করেছি (এটি বিপরীতে 'আকস' হয়ে ওঠে, আমি এটি পরে দেখব the হ্যাশটিকে পুনরায় অর্ডার করতে হবে :(।


1
এক্স ব্যতীত, এটি ওপি-র উদাহরণগুলিতে (বি), (গ) ব্যর্থ হয় এবং আমার উত্তর পরীক্ষার ক্ষেত্রে (ঙ) এবং (ছ) পরীক্ষা করে।
psxls

এটি খুব সত্য, অঙ্কন বোর্ডে ফিরে!
ডোম হেস্টিংস

2

জিএনইউ শেড, 514

s/$/\n@a!e@b!bub@c!kut@d!dud@e!i@f!fuf@g!jug@h!hash@i!ay@k!kak@l!lul@m!mum@n!nun@o!o@p!pup@q!kwak@r!rud@r!rut@s!sus@t!tut@u!yu@v!vuv@w!waks@x!eks@y!yak@z!zuz/
s/.*\n\(.*\)/&\U\1@/
ta
:a
s/^1/0\v/
td
s/^0/1\v/
:t
/\v\n/bf
s/\v\([^a-z]\)/\1\v/i
tt
s/\v\([a-z]\)\1/skwer\v\1/
s/\v\([A-Z]\)\1/SKWER\v\1/
s/\v\(.*\)\(.*\n.*@\1!\(\w\+\)@\)/\3\v\2/
s/rut\vd/rud\vd/
s/RUT\vD/RUD\vD/
bt
:d
/\v\n/bf
s/\v\([^a-z]\)/\1\v/i
td
s/\v\(skwer\)/\1\v/i
s/\v\(.*\)\(.*\n.*@\(.\)!\1@\)/\3\v\2/
s/skwer\(.\)\v/\1\1\v/
bd
:f
s/\v.*//

আমি এখন জন্য সম্পন্ন করেছি, যদিও সম্ভবত সংক্ষিপ্ত করা যেতে পারে।

উভয় দিকের রূপান্তরগুলি পরিচালনা করতে একটি সন্ধানের টেবিল ব্যবহার করে, স্কুয়ার কেস এবং রুদ্দুড / রুডডিডিও সহ সমস্ত ব্যতিক্রমগুলি সঠিকভাবে পরিচালনা করতে হবে।

প্রতিটি লাইনে ইনপুট 0/1 হিসাবে নেওয়া হয় স্ট্রিংয়ের পরে। \vকার্সার হিসাবে (উল্লম্ব ট্যাব) ব্যবহার করে ।

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