U xu ti te gismytermorna? (এটি কি বৈধ গিসমু?)


25

(আক্ষরিক: "এটি কি জিসমু - ফর্মটি অনুসরণ করে / অনুধাবন করে ?")

প্রতিজ্ঞা

লোজবান ভাষাটি একটি নির্মিত ভাষা , এর অর্থ অংশে এর সমস্ত শব্দ প্রাকৃতিকভাবে বিকাশের অনুমতি না দিয়ে তৈরি করা হয়েছে। লোজবানের মূল শব্দটি হ'ল এর জিসমু বা মূল শব্দগুলি, যা চীনা, হিন্দি এবং ইংরেজির মতো বিস্তৃত প্রাকৃতিক ভাষাগুলির শিকড়কে একত্রিত করে সংশ্লেষ করা হয়েছিল । সমস্ত জিসমু 5 টি অক্ষর দীর্ঘ এবং একটি নির্দিষ্ট কঠোর রূপ অনুসরণ করে।

তথ্য

আমাদের উদ্দেশ্যে, লোজবান বর্ণমালাটি হ'ল:

abcdefgijklmnoprstuvxz

অর্থাৎ রোমান বর্ণমালা ব্যতীত hqwy

এই বর্ণমালা চারটি বিভাগে বিভক্ত করা যেতে পারে:

  • স্বরবর্ণ aeiou

  • সোনারেন্ট ব্যঞ্জনা lmnr

  • অনাবৃত ব্যঞ্জনবর্ণ ptkfcsx। কণ্ঠ দেওয়া হলে এগুলি যথাক্রমে ...

  • স্বরযুক্ত ব্যঞ্জনবর্ণ bdgvjz(কোনও স্বরযুক্ত ব্যঞ্জনবর্ণের সাথে মিল নেই x))

একটি বৈধ গিসমু হতে, একটি পাঁচ-চর-দীর্ঘ স্ট্রিং অবশ্যই:

  1. ব্যঞ্জনবর্ণ-স্বরবর্ণের নিদর্শনগুলির মধ্যে একটি CVCCVবা CCVCVসি যেখানে একটি ব্যঞ্জনবর্ণকে উপস্থাপন করে এবং ভি একটি স্বরকে প্রতিনিধিত্ব করে।

  2. ব্যঞ্জনবর্ণের সাথে মেলে এমন নিয়ম অনুসরণ করুন।

সিসিভিসিভি শব্দের জন্য ব্যঞ্জনামূলক মিলের নিয়ম:

প্রথম দুটি অক্ষর নিম্নলিখিত 48 জোড়া ( উত্স ) এর মধ্যে একটি গঠন করতে হবে :

ml mr
pl pr
bl br
   tr                   tc ts
   dr                   dj dz
kl kr
gl gr
fl fr
vl vr
cl cr cm cn cp ct ck cf
      jm    jb jd jg jv
sl sr sm sn sp st sk sf
      zm    zb zd zg zv
xl xr

নোট করুন যে স্বরযুক্ত এবং অনাবৃত জোড়গুলিতে বিচ্ছিন্ন হয়ে গেলে এটিকে আরও সুন্দর দেখাচ্ছে। বিশেষত, প্রতিটি স্বরযুক্ত-স্বরযুক্ত জোড় বৈধ হয় যদি সম্পর্কিত আন-বিযুক্ত-অনাবৃত জোড় বৈধ হয়। এটি একটি সোনারেন্ট ব্যঞ্জনাঙ্কের সাথে জুড়ে প্রসারিত হয় না; clবৈধ তবে jlতা নয়।

সিভিসিসিভি শব্দের ( উত্স ) জন্য ব্যাক্তিগত মিলের নিয়ম :

তৃতীয় এবং চতুর্থ অক্ষরের অবশ্যই নিম্নলিখিত বিধিগুলি অনুসরণ করা উচিত:

  1. উভয় ব্যঞ্জনবর্ণ একই হতে নিষেধ [...]

  2. এটি একটি ব্যঞ্জনবর্ণের জন্য এবং অন্যটি উদ্রেক করা নিষিদ্ধ। "এল", "এম", "এন", এবং "আর" ব্যঞ্জনা এই বিধিনিষেধ থেকে অব্যাহতিপ্রাপ্ত। ফলস্বরূপ, "বিএফ" নিষিদ্ধ, এবং তাই "এসডি", তবে উভয় "ফ্ল" এবং "ভিএল", এবং উভয়ই "এলএস" এবং "এলজেড" অনুমোদিত হয়।

  3. উভয় ব্যঞ্জনবর্ণের জন্য সেটটি "সি", "জ", "এস", "জেড" থেকে আঁকা নিষিদ্ধ।

  4. নির্দিষ্ট জোড়গুলি "সিক্স", "কেএক্স", "এক্সসি", "এক্স কে" এবং "এমজেড" নিষিদ্ধ।

মনে রাখবেন 17 টি সম্ভাব্য জোড়া রয়েছে।

চ্যালেঞ্জ

প্রদত্ত স্ট্রিংটি জিসমু গঠনের নিয়ম অনুসরণ করে কিনা তা নির্ধারণ করুন । এটি , তাই বাইটগুলির মধ্যে সংক্ষিপ্ততম সমাধানটি জিতে।

ইনপুট : লোজবান বর্ণমালা থেকে 5 দৈর্ঘ্যের একটি স্ট্রিং।

আউটপুট : একটি truthy মান যদি স্ট্রিং একটি হতে পারে gismu এবং অন্যথায় একটি falsey মান।

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

বৈধ:

gismu
cfipu
ranxi
mupno
rimge
zosxa

অবৈধ:

ejram
xitot
dtpno
rcare
pxuja
cetvu

আরও পরীক্ষার কেস: এই পাঠ্য ফাইলে সমস্ত বৈধ গিসমু রয়েছে, প্রতি লাইনে একটি।

আমি আসলে লোজবানকে জানি না, তাই আমি শিরোনাম অনুবাদটি ভুল বলে সন্দেহ করি। সাহায্য প্রশংসা করা হয়।


8
নোট করুন যে লোজবান উচ্চারণটি ফোনেটিক, তাই জিআইএমএফ-এর মতো জিস্তুও একটি শক্ত জি দিয়ে উচ্চারণ করা হয়।
lirtosiast

12
আমি জানি না যে এটির একটি ভাল উদাহরণ কিনা, কারণ জিআইএফের সরকারী উচ্চারণটি জিফের মতো। : পি
জিওকাভেল

সাইড প্রশ্ন: উভয় যেহেতু sএবং kভাষা অংশ, কি উচ্চারণ করে cআছে?
সময়সীকরণ করুন

2
@ ফ্যাটালাইজ: এটি "শ"।
দেউসোভি

1
@ দেউসোভি মনে হচ্ছে আপনি ঠিক আছেন আমার এটি ভুল হওয়ার কারণটি হ'ল jইংরাজী জে হিসাবে উচ্চারণ করা হয়নি, বরং ফরাসী জে হিসাবে (প্রথম দিকে প্লেসিভ ছাড়া) লিঙ্কযুক্ত একটি পৃষ্ঠা থেকে The regular English pronunciation of “James”, which is [dʒɛjmz], would Lojbanize as “djeimz.”, which contains a forbidden consonant pair......[additional rule to avoid this]আমরা দেখতে পাচ্ছি যে প্লেসিভ ডি যুক্ত করা দরকার un ফরাসী জে এর সংস্করণ আসলে এসএইচ। আইপিএ চিহ্নগুলি (যারা তাদের বোঝে তাদের জন্য) উইকিপিডিয়া পৃষ্ঠায় রয়েছে।
স্তর নদী সেন্ট

উত্তর:


7

রুবি, 302 252 বাইট

c='[cjsztdpbfvkgxmnlr]'
v=c+'[aeiou]'
z=!1
n=/#{c+v+v}/=~(s=gets.chop)*2
(n==0||n==2)&&289.times{|k|q=[i=k%17,j=k/17].max
z||=(x=s[n,2])==c[j+1]+c[i+1]&&['UeUeJOJOJOJOETJ
:'[i].ord-69>>j&1-j/14>0,i!=j&&q>3&&(k%2<1||q>12)&&!'mzxcxkx'.index(x)][n/2]}
p z

নীচে আরও কয়েকটি বাইট সংরক্ষণ করা যায়:

আরম্ভ zমিথ্যাতে ব্যবহার z=!c='[cjsztdpbfvkgxmnlr]'। এটি কাজ করে তবে সতর্কতা দেয় warning: found = in conditional, should be ==

একটি প্রোগ্রাম থেকে একটি ফাংশনে পরিবর্তন করুন (আমি এটিকে একটি প্রোগ্রাম হিসাবে ছেড়ে দিয়েছি কারণ প্রশ্ন অনুসারে, বাইটস জিততে সংক্ষিপ্ততম "প্রোগ্রাম"))

প্রথম পোস্ট থেকে পরিবর্তনের সংক্ষিপ্তসার

রেজেক্স / ম্যাচিং অংশের প্রধান ওভারহল ul

কনস্ট্যান্ট 72 টি 69 এ পরিবর্তিত হয়েছে যাতে ম্যাজিক স্ট্রিংয়ের সর্বনিম্ন এএসসিআইআই কোড 13 এর পরিবর্তে 10 হয় This

ম্যাজিক স্ট্রিং 'mzxcxkx'সিভিসিসিভি টাইপ সারণিতে 5 টি নিষিদ্ধ অক্ষরের জন্য পাটিগণিত নিয়মগুলি প্রতিস্থাপন করে।

অসম্পূর্ণ সংস্করণ

হোয়াইটস্পেস যুক্ত এবং যাদু স্ট্রিংয়ে নতুনরেখাকে পরিবর্তিত করে একটি \n

c='[cjsztdpbfvkgxmnlr]'                                   #c=consonants
v=c+'[aeiou]'                                             #v=consonant+vowel
z=!1                                                      #Set z to false (everything is truthy in Ruby except nil and false.)
n=/#{c+v+v}/=~(s=gets.chop)*2                             #Get input and duplicate it. do regex match, n becomes the index of the double consonant. 
(n==0||n==2)&&                                            #If n==0 (ccvcv) or n==2 (cvccv) 
   289.times{|k|                                          #iterate 17*17 times
     q=[i=k%17,j=k/17].max                                #generate row and column, find their maximum.
     z||=                                                 #OR z with the following expression:
     (x=s[n,2])==c[j+1]+c[i+1]&&                          #double consonant == the pair corresponding to j,i AND either 
       ["UeUeJOJOJOJOETJ\n:"[i].ord-69>>j&1-j/14>0,       #this expression or
       i!=j&&q>3&&(k%2<1||q>12)&&!'mzxcxkx'.index(x)][n/2]#this expresson, depending on the value of n/2
   }
p z                                                       #print output

মিলের ব্যাখ্যা

ইনপুট স্ট্রিংয়ের দুটি অক্ষরকে s[n,2]পুনরাবৃত্ত লুপের অক্ষর জোড়ার সাথে তুলনা করা হয়। যদি সেগুলি মিলে যায় এবং ব্যঞ্জনবর্ণ-স্বরবর্ণ রেজেক্স প্যাটার্নটি সঠিক হয় তবে সারি এবং কলামের মানগুলি i,jবৈধতার জন্য পরীক্ষা করা হয়। ব্যঞ্জনবর্ণগুলির যত্ন সহকারে অর্ডার দেওয়া এখানে সহায়তা করে।

সিভিসিসিভির জন্য:

i!=j                        It is forbidden for both consonants to be the same
(k%2<1||q>12)               It is forbidden for one consonant to be voiced and the other unvoiced. The consonants “l”, “m”, “n”, and “r” are exempt from this restriction. As a result, “bf” is forbidden, and so is “sd”, but both “fl” and “vl”, and both “ls” and “lz”, are permitted.
q>3                         It is forbidden for both consonants to be drawn from the set “c”, “j”, “s”, “z”.
!'mzxcxkx'.index(x)         The specific pairs “cx”, “kx”, “xc”, “xk”, and “mz” are forbidden.

সিসিভিসিভির জন্য

নীচের টেবিলের প্রতিটি কলামের একটি বিটম্যাপটি যাদু স্ট্রিংয়ে এনকোড করা হয়েছে, যার থেকে 69 বিয়োগ করা হয়েছে। শেষ দুটি ব্যতীত সমস্ত কলামের জন্য, কেবল 6 টি বিট প্রয়োজন। শেষ দুটিটির জন্য, উচ্চতর অর্ডার বিটগুলি 1 হওয়া দরকার, তাই শীর্ষস্থানীয় শূন্যগুলির পরিবর্তে 1 এর শীর্ষস্থানীয় হওয়ার জন্য একটি নেতিবাচক সংখ্যা তৈরি করা হবে (অক্ষর \nএবং :)। আমরা যদিও টেবিলের শেষ তিনটি সারি অন্তর্ভুক্ত করতে চাই না, সুতরাং 1 দ্বারা রাইটসফিট এবং অ্যান্ডিংয়ের পরিবর্তে আমরা রাইটসফিট এবং এবং 1-j/14যার মাধ্যমে সাধারণত 1 এর মূল্যায়ন করি তবে শেষ 3 সারিগুলির জন্য 0 এ মূল্যায়ন করি।

নীচের টেবিলগুলি তৈরি করতে নিম্নলিখিত প্রোগ্রামটি (জমা দেওয়ার মতো একই অভিব্যক্তি সহ) ব্যবহার করা হয়েছিল ( ifআপনি যে টেবিলটি চান তার জন্য যে কোনও লাইন প্রয়োজন is

c='[cjsztdpbfvkgxmnlr]'
z=0
289.times{|k|
  q=[i=k%17,j=k/17].max
  r=c[j+1]+c[i+1]
  #if i!=j && q>3 && (k%2<1||q>12) && !'mzxcxkx'.index(r)
  #if "UeUeJOJOJOJOETJ\n:"[i].ord-69>>j&1-j/14>0
    print r,' '
    z+=1
  else
    print '   '
  end
  i==16&&puts 
}
puts z


            ct    cp    cf    ck       cm cn cl cr
               jd    jb    jv    jg    jm jn jl jr
            st    sp    sf    sk    sx sm sn sl sr
               zd    zb    zv    zg    zm zn zl zr
tc    ts          tp    tf    tk    tx tm tn tl tr
   dj    dz          db    dv    dg    dm dn dl dr
pc    ps    pt          pf    pk    px pm pn pl pr
   bj    bz    bd          bv    bg    bm bn bl br
fc    fs    ft    fp          fk    fx fm fn fl fr
   vj    vz    vd    vb          vg    vm vn vl vr
kc    ks    kt    kp    kf             km kn kl kr
   gj    gz    gd    gb    gv          gm gn gl gr
      xs    xt    xp    xf             xm xn xl xr
mc mj ms    mt md mp mb mf mv mk mg mx    mn ml mr
nc nj ns nz nt nd np nb nf nv nk ng nx nm    nl nr
lc lj ls lz lt ld lp lb lf lv lk lg lx lm ln    lr
rc rj rs rz rt rd rp rb rf rv rk rg rx rm rn rl 
179

            ct    cp    cf    ck       cm cn cl cr
               jd    jb    jv    jg    jm
            st    sp    sf    sk       sm sn sl sr
               zd    zb    zv    zg    zm
tc    ts                                        tr
   dj    dz                                     dr
                                             pl pr
                                             bl br
                                             fl fr
                                             vl vr
                                             kl kr
                                             gl gr
                                             xl xr
                                             ml mr


48

আমি ফাংশনগুলিকে অনুমতি দেওয়ার জন্য শব্দ পরিবর্তন করেছি; দুঃখিত এটি এতক্ষণ সময় নিয়েছে।
lirtosiast

6

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

g=>((q=3,w=2,r=0,f="mzcscjzjxcxkx",c="bdgvjzptkfcsxlmnr",d=[...c],v="aeiou")[m="match"](g[1])?d.map((a,i)=>d.map((b,j)=>a==b|(i<6&j>5&j<13|j<6&i>5&i<13)||f[m](a+b)||(p+=","+a+b)),p="",q=0,r=w--)&&p:"jbl,zbr,tstcl,cmr,cn,cr,jdr,cfl,sfr,jgl,zgr,zdjml,ckl,skr,cpl,spr,sl,sm,sn,sr,ctr,jvl,zvr,xl,xr,dzm")[m](g[r]+g[r+1])&&c[m](g[q])&&v[m](g[w])&&v[m](g[4])

ব্যাখ্যা

এটি বৈধ গিসমু বা না nullথাকলে সর্বশেষ বর্ণ (সত্যবাদী) সমন্বিত একটি অ্যারে প্রদান করে Return

আকারের অনেকগুলি হার্ড-কোডড CCVCVজোড়া থেকে আসে (এমনকি তাদের ঘনীভূত করার পরেও)। এগুলি উত্পন্ন করার জন্য কোনও প্যাটার্ন খুঁজে পাওয়া সম্ভব হতে পারে তবে আমি ইতিমধ্যে এটিতে অনেক বেশি সময় ব্যয় করেছি! xD

g=>
  (
    // Save the positions to check for the consonant, vowel and pair respectively
    (q=3,w=2,r=0,                       // default = CCVCV format
    f="mzcscjzjxcxkx",                  // f = all forbidden pairs for CVCCV pairs
    c="bdgvjzptkfcsxlmnr",              // c = consonants
    d=[...c],                           // d = array of consonants
    v="aeiou")                          // v = vowels
    [m="match"](g[1])?                  // if the second character is a vowel

      // Generate CC pairs of CVCCV
      d.map((a,i)=>                     // iterate over every possible pair of consonants
        d.map((b,j)=>
          a==b|                         // rule 1: consonants cannot be the same
          (i<6&j>5&j<13|j<6&i>5&i<13)|| // rule 2: pair cannot be voiced and unvoiced
          f[m](a+b)||                   // rule 3 & 4: certain pairs are forbidden
            (p+=","+a+b)                // if it follows all the rules add the pair
        ),
        p="",                           // p = comma-delimited valid CVCCV pairs
        q=0,r=w--                       // update the match positions to CVCCV format
      )&&p
    :
      // CC pairs of CCVCV (condensed so that valid pairs like "jb", "bl" and
      //     "zb" can be matched in this string but invalid pairs like "lz" cannot)
      "jbl,zbr,tstcl,cmr,cn,cr,jdr,cfl,sfr,jgl,zgr,zdjml,ckl,skr,cpl,spr,sl,sm,sn,sr,ctr,jvl,zvr,xl,xr,dzm"

  // Match the required format
  )[m](g[r]+g[r+1])&&c[m](g[q])&&v[m](g[w])&&v[m](g[4])

পরীক্ষা


0

জাভাস্ক্রিপ্ট ES6, 240 বাইট

x=>eval(`/${(c='[bcdfgjklmnprstvxz]')+c+(v='[aeiou]')+c+v}/${t='.test(x)'}?/^[bfgkmpvx][lr]|[cs][fklmnprt]|d[jrz]|[jz][bdgmv]/${t}:/${c+v+c+c+v}/${t}?!/^..((.)\\2|${V='[bdgvjz]'}${U='[ptkfcsx]'}|${U+V}|[cjsz][cjsz]|cx|kx|xc|xk|mz)/${t}:!1`)

আমার ধারণা এখন এটি আমার কাজ।

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