কাডি সিস্টেমটি ডিকোডিং


14

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

( কাটাপায়াদি পদ্ধতি হ'ল সংখ্যাগুলিকে অক্ষর হিসাবে এনকোড করার জন্য প্রাচীন ভারতীয় ব্যবস্থা, দীর্ঘসময় স্মরণে রাখার জন্য স্মৃতিস্তম্ভ হিসাবে ব্যবহৃত হয়))

এখানে আপনার কাজ হ'ল কাডি সিস্টেমে এনকোড করা পাঠ্যটি ডিকোড করা এবং সংখ্যার মানটি মুদ্রণ করা।

বিস্তারিত

অক্ষরগুলি ইনপুট করুন

কাডি সিস্টেমটি কাটাপায়াদি সিস্টেমের নিয়মের উপর ভিত্তি করে তৈরি হয় তবে ব্যঞ্জনবর্ণের প্রথম সারিটি ব্যবহার করে। এখানে আপনার পাঠ্যটি লাতিন বর্ণমালায় লিখিত হয়েছে এবং কেবল এটি রয়েছে বলে জানা যায়:

  • স্বর 'এ', 'ই', 'আই', 'ও', 'ইউ'
  • ব্যঞ্জনবর্ণ 'ছ', 'ট', 'গ', 'ঞ', এবং তাদের মূলধন ফরম (প্রতিনিধিত্ব করতে aspirated ঐ ব্যঞ্জনবর্ণ আকারে), এবং 'এন' এবং 'এন'।

(আপনি যদি আপনার ভাষাতে আরও সুবিধাজনক হন তবে 'g' কে 'এনজি' এবং 'as' কে 'এনওয়াই' হিসাবে গ্রহণ এবং পরিচালনা করতে পারেন।)

মান অ্যাসাইনমেন্ট

এই সিস্টেমে,

  1. স্বর অনুসারে প্রতিটি ব্যঞ্জনবর্ণের সাথে এর সাথে একটি অঙ্ক যুক্ত থাকে। এইগুলো:

    'k'=>1, 'K'=>2,
    'g'=>3, 'G'=>4,
    'ṅ'=>5,
    'c'=>6, 'C'=>7,
    'j'=>8, 'J'=>9,
    'ñ'=>0

তবে নোট করুন, এই ব্যঞ্জনবর্ণগুলি স্বর অনুসরন করে কেবল তখনই এই মানগুলি প্রয়োগ হয়। ( , = (1,7)) kacCiএর সমান মান রয়েছে যেহেতু মাঝের সিটি একটি স্বর দ্বারা মিলিত নয়। kaCikaCi

  1. উপরন্তু, ইনিশিয়াল স্বরবর্ণ বা দুই স্বরবর্ণ ক্রম প্রতিনিধিত্ব করে একটি 0. aikaCiহবে: ai, ka, Ci= (0,1,7)

  2. টেক্সট মাঝখানে কোথাও অতিরিক্ত স্বরবর্ণ কোনো মূল্যই নেই: kauCiaহিসাবে একই kaCi, অতিরিক্ত স্বরবর্ণ উপেক্ষা করা যাবে।

চূড়ান্ত সংখ্যাসূচক মান

অক্ষরের অঙ্কের মানগুলি বের হয়ে গেলে, চূড়ান্ত সংখ্যাসূচক মানটি সেই অঙ্কগুলির বিপরীত ক্রম হিসাবে প্রাপ্ত হয় অর্থাৎ পাঠ্য থেকে প্রথম সংখ্যাটি চূড়ান্ত মানের সর্বনিম্ন উল্লেখযোগ্য অঙ্ক digit

যেমন।
GucCiআছে Guএবং Ci, সুতরাং (4, 7), সুতরাং চূড়ান্ত মান 74.
kakakaGoহয় (1,1,1,4), উত্তর 4111.
guṅKoহয় (3,2), তাই এনকোড 23. ( gungKoযদি ASCII ব্যবহার করা হয় -সমতুল্য.)

ইনপুট

  • কাদি-এনকোডযুক্ত পাঠ্যযুক্ত একটি স্ট্রিং
    • কেবলমাত্র স্বর এবং উপরের ব্যঞ্জনবর্ণ ধারণ করবে
    • স্বরগুলি সর্বদা ছোট হাতের অক্ষরে থাকে এবং 2 টিরও বেশি গ্রুপে ঘটে
    • আপনি 5 এবং 0 এর জন্য অক্ষরগুলি তাদের ইউনিকোড অক্ষর 'ṅ' এবং 'ñ' বা তাদের ASCII সমতুল্য 'এনজি' এবং 'এনওয়াই' হিসাবে গ্রহণ করতে পছন্দ করতে পারেন (তারা উভয় আকারে ছোট হাতের অক্ষরে আছেন)
    • আপনি ধরে নিতে পারেন যে কোনও স্থান বা বিরামচিহ্ন নেই

আউটপুট

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

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

"GucCi"
=> 74
"kakakaGo"
=> 4111
"aiKaCiigukoJe"
=> 913720
""
=> 0 //OR empty/falsey output
"a"
=> 0
"ukkiKagijeCaGaacoJiiKka"
=> 1964783210
"kegJugjugKeg"
=> 2891
"guṅKo"
=> 23
"Guñaaka"
=> 104
"juñiKoṅe"
=>5208

(শেষগুলি হতে পারে:

"gungKo"
=> 23
"Gunyaaka"
=> 104
"junyiKonge"
=>5208

যদি আপনি এটি পছন্দ করেন।)

I / O এবং লুফোলগুলির জন্য মানক বিধিগুলি প্রযোজ্য। সেরা গল্ফার জয় হোক!


1
aiaKaciইনপুট হতে পারে? (3 নেতৃস্থানীয় স্বর)
এরিক আউটগলফার

এখানে কোনও পরীক্ষার কেস নেই যা ব্যঞ্জনে শেষ হয়; আমরা কি ধরে নিতে পারি ইনপুটটি সর্বদা স্বরবে শেষ হবে?
এরিক আউটগল্ফার

3 নেতৃস্থানীয় স্বর জন্য নয়। প্রকৃতপক্ষে, আমি মনে করি না যে 3 ফলস্বর স্বরগুলি ইনপুটটিতে কোথাও ঘটেছিল (2 ইংরেজি স্বর কখনও কখনও একটি সংস্কৃত স্বর ধ্বনি উপস্থাপন করার প্রয়োজন হয় তবে কখনও 3 নয়) sense আমি এখন কোনও ইনপুট সীমাবদ্ধতা হিসাবে এটি যুক্ত করতে পারি বা খুব দেরি হয়ে গেছে?
- মনিকা পুনরায় ইনস্টল করুন 8:25

2
এটি স্পষ্ট করতে বেশি দেরী হয়নি যে ইনপুটটিতে 3 টি শীর্ষ স্বর থাকবে না। এটি কোনও জমা পড়বে না এবং আমি সন্দেহ করি যে কেউ এটিকে বিবেচনায় নিতে লম্বা কোড লিখেছেন এবং যদি তাদের কাছে থাকে তবে তারা কেবল এটিকে সরাতে পারবেন। ভাল করে প্রথম প্রশ্ন! :)
স্টিভি গ্রিফিন

2
যদি এটি কয়েকটি ভাষায় সহায়তা করে: প্রতিটি ব্যঞ্জনবর্ণের জন্য ord(c)%47%10একটি অনন্য সূচক দেয় [0..9]। (সাথে ord("ṅ")=7749এবং ord("ñ")=241।)
আর্নল্ড

উত্তর:


5

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

s=>s.replace(s=/(^|[ṅcCjJñkKgG])[aeiou]/g,(_,c)=>o=(s+s).search(c)%10+o,o='')&&o

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

কিভাবে?

আমরা স্বর দ্বারা অনুসরণ করা হয় স্ট্রিংয়ের শুরুতে বা কোনও একটি কাদি ব্যঞ্জনবর্ণের সাথে মিলে নিম্নলিখিত নিয়মিত অভিব্যক্তিটি ব্যবহার করি:

/(^|[ṅcCjJñkKgG])[aeiou]/g

ইনপুট স্ট্রিং প্রতিটি ম্যাচের জন্য আমরা কলব্যাক ফাংশন যে সামগ্রী লাগে ডাকা প্যারামিটার হিসাবে ক্যাপচার গ্রুপের:

(_, c) => o = (s + s).search(c) % 10 + o

আমরা নিয়মিত অভিব্যক্তিতে তার ব্যঞ্জনাটির অবস্থানটি অনুসন্ধান করে (নিজের সাথে যোগ করে একটি স্ট্রিংয়ের জন্য জোর করে) এটির মান খুঁজে পাই।

ব্যঞ্জনবর্ণগুলি এমনভাবে অর্ডার করা হয় যাতে তাদের মান তাদের অবস্থানের মডুলোর 10 এর সমান হয় :

string   : /  (  ^  |  [  ṅ  c  C  j  J  ñ  k  K  g  G  ]  )  [  a  e  i  o  u  ]  /  g
position : 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 ...
modulo 10: -  -  -  -  -  5  6  7  8  9  0  1  2  3  4  -  ...

যখন আমরা ব্যঞ্জনবর্ণের পরিবর্তে স্ট্রিংয়ের শুরুটির সাথে মিলে যাই, সি একটি খালি স্ট্রিং যার নিয়মিত প্রকাশের অবস্থান 0 - যা, সুবিধামত, সেই ক্ষেত্রে প্রত্যাশিত ফলাফল।

অবশেষে, আমরা আউটপুট স্ট্রিং এর শুরুতে এই অঙ্কটি সন্নিবেশ করি ।


4

রেটিনা , 41 বাইট

T`ñkKgGṅcCjJ`d`.[aeiou]
^[aeiou]
0
\D

V`

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। Explantion:

T`ñkKgGṅcCjJ`d`.[aeiou]

স্বর অনুসারে ব্যঞ্জনবর্ণগুলি অনুবাদ করুন।

^[aeiou]
0

একটি অগ্রণী স্বর পরিচালনা করুন।

\D

অন্য সব কিছু মুছুন।

V`

ফলাফল বিপরীত।


4

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

lambda s,h=u'ñkKgGṅcCjJ'.find:''.join(`h(c)`*(0>h(v)<h(c))for c,v in zip(u'ñ'+s,s))[::-1]

একটি ইউনিকোড স্ট্রিং গ্রহণ করে এমন একটি নামহীন ফাংশন যা বেস দশের ফলাফলের স্ট্রিং প্রতিনিধিত্ব করে।

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


3

জাভা 8, 136 126 বাইট

s->{for(int i=s.length,t;i-->0;)if("aeiou".contains(s[i]))System.out.print(i<1?0:(t="ñkKgGṅcCjJ".indexOf(s[i-1]))<0?"":t);}

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

ব্যাখ্যা:

s->{                           // Method with String-array parameter and String return-type
  for(int i=s.length,t;i-->0;) //  Loop backwards over the input-characters
    if("aeiou".contains(s[i])) //   If the current character is a vowel:
      System.out.print(        //    Print:
         i<1?                  //     If we're at the first character:
          0                    //      Print a 0
         :                     //     Else:
          (t="ñkKgGṅcCjJ".indexOf(s[i-1]))<0?
                               //      If the character before the vowel is also a vowel:
           ""                  //       Print nothing
          :                    //      Else:
           t);}                //       Print the correct digit of the consonant

3

জেলি , 27 বাইট

Żµe€Øẹœpṫ€0F“kKgGṅcCjJ”iⱮUḌ

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

জেলি ... 1-বাইটের জন্য অন্তর্নির্মিত

ব্যাখ্যা


Żµ             Prepend 0 to the string.
  e€  œp       Split at...
    Øẹ           the vowels. (0 is not a vowel)

ṫ€0            For each sublist `l` takes `l[-1:]`.
                 If the initial list is empty the result is empty,
                 otherwise the result is a list contain the last element.
   F           Flatten. (concatenate the results)

“kKgGṅcCjJ”iⱮ  Find the index of each character in the list.
                 Get 0 if not found (i.e., for `0` or `ñ`)
UḌ             Upend (reverse) and then convert from decimal.

আমি যে তার সাথে বাইট সংরক্ষণ করার জন্য একটি উপায় খুঁজে বের না কিন্তু O%47%10একটি অনন্য সূচক দেয় [0...9]প্রতিটি ব্যঞ্জনবর্ণ জন্য। (যার অর্থ এই যে O%47অন্তর্নিহিত মডুলোটি 10 টি এন্ট্রির একটি অ্যারেতে সঠিক মানটি গ্রহণ করতে দেয়))
আর্নল্ড

1
@ আর্নল্ডকে 6;µe€Øẹœpṫ€0O%47ị“ ʠḷ’Œ?’¤Ṛতবে 27 টি না করে যদি এটি গল্ফ করা না যায়।
জোনাথন অ্যালান

3

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

lambda s,S=u'ñkKgGṅcCjJ':''.join(`S.find(c)`for c,n in zip(u'ñ'+s,s)if c in(n in'aeiou')*S)[::-1]

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

পাইথন 3 , 104 102 বাইট

lambda s,S='ñkKgGṅcCjJ':''.join(str(S.find(c))for c,n in zip('ñ'+s,s)if c in(n in'aeiou')*S)[::-1]

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


সংরক্ষিত

  • -৩ বাইট, রডকে ধন্যবাদ

ঠিক আছে, আপনি যদি শিরোনাম যোগ করতে পারেন তবে আমি স্ট্রিংগুলিতে ইউনিকোড উপসর্গটি ভুলে গেছি, সর্বোপরি, এটি একটি একক বাইট সংরক্ষণ করতে পারে
রড

@ রড, আহ ধন্যবাদ, আমি ইউনিকোড উপসর্গটি ভুলে গিয়েছিলাম :)
টিফিল্ড

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 126 বাইট

_=>(l=_.match(/[kgñṅcj][aeiou]/gi))?l.map(a=>"ñkKgGṅcCjJ".indexOf(a[0])).reverse``.join``+(/[ aiueo]/.test(_[0])?0:''):0

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


1
আপনি পরিবর্তন করে কয়েক বাইট সংরক্ষণ করতে পারবেন x=[..."ñkKgGṅcCjJ"]শুধু x="ñkKgGṅcCjJ"যেহেতু indexOfখুব স্ট্রিং সঙ্গে কাজ
WaffleCohn

1
এটি প্রাথমিক স্বরগুলির সাথে চিকিত্সা করবে বলে মনে হয় না 0, সুতরাং পরীক্ষার ক্ষেত্রে 3 এবং 6 ব্যর্থ হয় (যেমনটি টিআইওর আউটপুটটিতে দেখা যায়)।
- মনিকা

@ সুন্দর আমার খারাপ, স্থির।
লুইস ফেলিপ দে জেসুস মুনোজ


1

এমএটিএল , 48 47 45 বাইট

'ng'98Ztt'y'whw11Y2m)'ykKgGbcCjJ'tfqXEt10<)oP

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

(একটি বাইট সংরক্ষণ করতে 'ডি' এর পরিবর্তে 'বি')
(-২ বাইট লুইস মেন্ডোকে ধন্যবাদ)

ম্যাটল্যাব (এবং তাই এমএটিএল) @ টিফেল্ডের পাইথন সলিউশনটিকে আমার কল্পনা করার চেয়ে শক্ত পোর্টিং তৈরি বোবা সিরিজের বোকা হিসাবে স্ট্রিংগুলি চিকিত্সা করা (সম্ভবত এখানে একটি সরল লুপের সমাধানটি আরও সহজ হত?)। বিকল্প 'ng', 'ny'ইনপুট পদ্ধতি এবং প্রতিস্থাপন ব্যবহার করে শেষ হয়েছেng সঙ্গে bসহজ প্রক্রিয়াকরণের জন্য শুরুতে।

ব্যাখ্যা:

        % Implicit input (assume 'junyiKonge')
 'ng'   % string literal
 98     % 'b'
 Zt     % replace substring with another (stack: 'junyiKobe')
 t      % duplicate that (stack: 'junyiKobe' 'junyiKobe')
 'y'    % string literal
 w      % swap elements in stack so 'y' goes before input (stack: 'junyiKobe' 'y' 'junyiKobe')
 h      % horizontal concatenation (prepend 'y' to input string) (stack: 'junyiKobe' 'yjunyiKobe')
 w      % swap stack (stack: 'yjunyiKobe' 'junyiKobe')
 11Y2   % place 'aeiou' in stack (stack: 'yjunyiKobe' 'junyiKobe' 'aeiou')
 m      % set places with a vowel to True i.e. 1 (stack: 'yjunyiKobe' 0 1 0 1 0 1 0 0 1)
 )      % index into those places (stack: 'jyKd')
 'ykKgGdcCjJ' % string literal
 tfq    % generate numbers 0 to 9 (stack: 'jyKd' 'ykKgGdcCjJ' 0 1 2 3 4 5 6 7 8 9)
 XE     % replace elements in first array which are found in second,
        %  with corresponding elements from third
 t10<)  % keep only elements that are less than 10 (removes extraneous vowels)
 o      % convert from string to double (numeric) array (stack: 8 0 2 5)
 P      % flip the order of elements (stack: 5 2 0 8)
        % (implicit) convert to string and display

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

1
এছাড়াও, এমএটিএল ম্যানুয়ালটিতে "বেশ কয়েকটি জায়গায়" যদি ইনপুটটি স্ট্রিং বা চরিত্রের অ্যারে হয় "উল্লেখ করে - এটি দুটি ভিন্ন জিনিস? এমএটিএলবিতে অভিনব নতুন ডাবল-কোটেড স্ট্রিংগুলির সাথে কিছু করার আছে ?
সূন্দর - মনিকা পুনরায় ইনস্টল করুন 6'18

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

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