ফোনমিক আবুগিদা


12

চরিত্র

আসুন এই ইউনিকোড অক্ষরগুলিকে ইংরেজি আইপিএ ব্যঞ্জনবর্ণ বলুন :

bdfhjklmnprstvwzðŋɡʃʒθ

এবং আসুন এই ইউনিকোড অক্ষরগুলিকে ইংরেজি আইপিএ স্বর বলুন :

aeiouæɑɔəɛɜɪʊʌː

(হ্যাঁ, ːএটি কেবল দীর্ঘ স্বর চিহ্ন, তবে এই চ্যালেঞ্জের উদ্দেশ্যে স্বর হিসাবে বিবেচনা করুন))

শেষ অবধি, এগুলি প্রাথমিক এবং গৌণ মানসিক চিহ্ন :

ˈˌ

মনে রাখবেন যে ɡ( U + 0261 ) কোনও ছোট হাতের ছড়া নয় , এবং প্রাথমিক স্ট্রেস মার্কার ˈ( U + 02C8 ) কোনও এস্ট্রোস্ফ নয় এবং ː( U + 02D0 ) কোলন নয়।

তোমার কাজ

একটি শব্দ দেওয়া হয়েছে, তারা যে ব্যঞ্জনবর্ণগুলি অনুসরণ করে তার উপরে স্বরগুলি স্ট্যাক করুন এবং তারা যে ব্যঞ্জনবর্ণের পূর্বে বসে তার নীচে স্ট্রেস মার্কার রাখুন। (প্রশ্নের শিরোনামের ইঙ্গিত হিসাবে, এই জাতীয় একটি লেখার ব্যবস্থা, যেখানে ব্যঞ্জনবর্ণ-স্বর ক্রমগুলি একক হিসাবে একত্রে প্যাক করা হয়, তাকে আউবিগিডা বলা হয় )) ইনপুট প্রদত্ত ˈbætəlʃɪp, আউটপুট উত্পাদন করুন:

æə ɪ
btlʃp
ˈ

উপরোক্ত সংজ্ঞা অনুসারে একটি শব্দ ব্যঞ্জনবর্ণ, স্বরবর্ণ এবং স্ট্রেস চিহ্নের একটি স্ট্রিং হওয়ার গ্যারান্টিযুক্ত। কখনও ক্রমাগত চাপের চিহ্ন থাকবে না এবং এগুলি সর্বদা শব্দের শুরুতে এবং / অথবা কোনও ব্যঞ্জনবর্ণের আগে স্থাপন করা হবে ।

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

একটানা স্বর হতে পারে। উদাহরণস্বরূপ, kənˌɡrætjʊˈleɪʃənহয়ে যায়

      ɪ
ə  æ ʊeə
knɡrtjlʃn
  ˌ   ˈ

যদি কোনও শব্দের একটি স্বর দিয়ে শুরু হয়, তবে ব্যঞ্জনবর্ণ সহ এটি "বেসলাইনে" মুদ্রণ করুন: əˈpiːlহয়ে যায়

 ː
 i
əpl
 ˈ

প্রাথমিক, চাপযুক্ত স্বরযুক্ত একটি পরীক্ষার কেস: ˈælbəˌtrɔsহয়ে যায়

  ə ɔ 
ælbtrs
ˈ  ˌ  

একটি দীর্ঘ শব্দ: ˌsuːpərˌkaləˌfrædʒəˌlɪstɪˌkɛkspiːæləˈdoʊʃəsহয়ে যায়

               æ    
ː              ː ʊ  
uə aə æ əɪ ɪɛ  iəoə 
sprklfrdʒlstkkspldʃs
ˌ  ˌ ˌ   ˌ  ˌ    ˈ  

প্রাথমিক ডিপথং সহ প্রচুর স্বরযুক্ত স্ট্যাকিং এবং স্ট্রেস মার্কার নেই এমন একটি বাজে উদাহরণ eɪbaeioubaabaaabecomes

 u
 o
 i a
 eaa
ɪaaa
ebbb

রেফারেন্স বাস্তবায়ন

আপনার প্রোগ্রামে এই পাইথন স্ক্রিপ্টের মতোই আউটপুট তৈরি করা উচিত:

consonants = 'bdfhjklmnprstvwzðŋɡʃʒθ'
vowels = 'aeiouæɑɔəɛɜɪʊʌː'
stress_marks = 'ˈˌ'

def abugidafy(word):
    tiles = dict()
    x = y = 0

    is_first = True
    for c in word:
        if c in stress_marks:
            tiles[x + 1, 1] = c
        elif c in consonants or is_first:
            y = 0
            x += 1
            tiles[x, y] = c
            is_first = False
        elif c in vowels:
            y -= 1
            tiles[x, y] = c
            is_first = False
        else:
            raise ValueError('Not an IPA character: ' + c)

    xs = [x for (x, y) in tiles.keys()]
    ys = [y for (x, y) in tiles.keys()]
    xmin, xmax = min(xs), max(xs)
    ymin, ymax = min(ys), max(ys)

    lines = []
    for y in range(ymin, ymax + 1):
        line = [tiles.get((x, y), ' ') for x in range(xmin, xmax + 1)]
        lines.append(''.join(line))
    return '\n'.join(lines)

print(abugidafy(input()))

আইডিয়নে চেষ্টা করে দেখুন।

বিধি

  • আপনি কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখতে পারেন।

  • যদি আপনার প্রোগ্রামটিতে একটি ইউনিকোড অক্ষর / স্ট্রিং প্রকার থাকে, আপনি ইনপুট এবং আউটপুটগুলি সেগুলি ব্যবহার করে ধরে নিতে পারেন। যদি না হয়, বা আপনি STDIN থেকে পড়েন / লিখেন তবে ইউটিএফ -8 এনকোডিং ব্যবহার করুন।

  • আপনি নিউলাইনগুলি সহ একটি স্ট্রিং উত্পাদন করতে পারেন, বা সারিগুলিকে উপস্থাপন করে এমন স্ট্রিংগুলির তালিকা, বা ইউনিকোড অক্ষরের একটি অ্যারে তৈরি করতে পারেন।

  • আউটপুট প্রতিটি সারিতে ট্রেলিং স্পেস পরিমাণ পরিমাণ থাকতে পারে। যদি আপনি একটি স্ট্রিং উত্পাদন করেন তবে এটিতে একটি একক ট্রেলিং নিউলাইন থাকতে পারে।

  • আপনার প্রোগ্রামটি নির্বিচারে দীর্ঘ স্বরযুক্ত চেইনগুলির সাথে নির্বিচারে দীর্ঘ শব্দের জন্য সঠিক আউটপুট তৈরি করা উচিত, তবে ইনপুট শব্দটি সর্বদা বৈধ বলে ধরে নিতে পারে।

  • যদি কোনও স্ট্রেস মার্কার না থাকে তবে আপনার আউটপুটে optionচ্ছিকভাবে একটি চূড়ান্ত খালি সারি অন্তর্ভুক্ত থাকতে পারে (কোনও কিছুই বা শূন্যস্থান নেই)।

  • সংক্ষিপ্ত উত্তর (বাইটে) জিতেছে।


দরিদ্র ɜ, আপনি এটি ছেড়ে দিয়েছেন :-) এবং ব্রিটিশরা তাদের সম্পর্কে অভিযোগ করবেɒ
লুইস মেন্ডো

উফ, আমি করলাম! আমি যোগ করেছি ɜ, সুতরাং এটি এখন সম্পূর্ণ সাধারণ আমেরিকান স্বর সেট হওয়া উচিত।
লিন

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

আমাদের প্রোগ্রামটি স্বীকৃত হওয়া উচিত এমন ব্যঞ্জনবর্ণের পরে কি সর্বাধিক সংখ্যক স্বর রয়েছে? টেস্ট কেস যুক্ত না করলে biiiiiiiiiiiʒ(যেমন "মৌমাছিদের মতো নয়")
ড্যানথম্যান

1
পুনঃটুইট ইউনিকোড I / O চ্যালেঞ্জের অংশ। আমি সে সম্পর্কে একটি নোট যুক্ত করব।
লিন

উত্তর:


2

NARS2000 এপিএল, 138 বাইট

⍉⌽⊃E,⍨¨↓∘' '¨∨/¨∊∘M¨E←(1+(W∊M←'ˌˈ')++\W∊'bdfhjklmnprstvwzðŋɡʃʒθ')⊂W←⍞

⍞←আউটপুট বিহিত হিসাবে আপনি প্রাথমিকটি সরাতে পারেন । এছাড়াও, বাইট গণনাটি এই হিসাবে অক্ষরের গণনার দ্বিগুণ হওয়া উচিত । সুতরাং এটি 138 বাইট হওয়া উচিত।
অ্যাডম

1

পাইথন, 222 বাইট

(২০২ টি অক্ষর)

import re
def f(s):y=[w[0]in'ˈˌ'and w or' '+w for w in re.split('([ˈˌ]?[bdfhjklmnprstvwzðŋɡʃʒθ]?[aeiouæɑɔəɛɜɪʊʌː]*)',s)[1::2]];return[[x[i-1:i]or' 'for x in y]for i in range(max(len(w)for w in y),0,-1)]

প্রতিটি সারিটির জন্য একটি অ্যারের সাথে ইউনিকোড অক্ষরের একটি অ্যারে ফেরত দেয় (প্রতিটি জায়গার জন্য একক স্পেস রয়েছে)

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


1

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

f=
s=>(a=s.match(/[ˈˌ]?.[aeiouæɑɔəɛɜɪʊʌː]*/g).map(s=>/[ˈˌ]/.test(s)?s:` `+s)).map(s=>(l=s.length)>m&&(t=s,m=l),m=0)&&[...t].map(_=>a.map(s=>s[m]||` `,--m).join``).join`
`
;
<input oninput=o.textContent=f(this.value)><pre id=o>

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