पात्र
चलो इन यूनिकोड वर्णों को अंग्रेजी IPA व्यंजन कहते हैं :
bdfhjklmnprstvwzðŋɡʃʒθ
और चलो इन यूनिकोड वर्णों को अंग्रेजी IPA स्वर कहते हैं :
aeiouæɑɔəɛɜɪʊʌː
(हां, ːसिर्फ लंबा स्वर चिह्न है, लेकिन इस चुनौती के उद्देश्य के लिए इसे एक स्वर के रूप में माना जाता है।)
अंत में, ये प्राथमिक और द्वितीयक तनाव के निशान हैं :
ˈˌ
ध्यान दें कि
ɡ( U + 0261 ) कोई लोअरकेस g नहीं है, और प्राथमिक तनाव मार्करˈ( 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ɪbaeioubaabaaaबन जाता है
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 से पढ़ते / लिखते हैं, तो UTF-8 एन्कोडिंग का उपयोग करें।
आप एक स्ट्रिंग का निर्माण कर सकते हैं जिसमें newlines, या पंक्तियों का प्रतिनिधित्व करने वाले तार की एक सूची या यूनिकोड वर्णों की एक सरणी हो।
आउटपुट की प्रत्येक पंक्ति में अनुगामी रिक्त स्थान की कोई भी राशि हो सकती है। यदि आप एक स्ट्रिंग का उत्पादन करते हैं, तो इसमें एक एकल अनुगामी न्यूलाइन हो सकती है।
आपके कार्यक्रम को मनमाने ढंग से लंबे स्वर श्रृंखलाओं के साथ मनमाने ढंग से लंबे शब्दों के लिए सही उत्पादन करना चाहिए, लेकिन यह मान सकते हैं कि इनपुट शब्द हमेशा मान्य है।
यदि कोई तनाव मार्कर नहीं हैं, तो आपका आउटपुट वैकल्पिक रूप से एक अंतिम खाली पंक्ति (जिसमें कुछ भी नहीं है, या रिक्त स्थान हो सकता है) शामिल हो सकता है।
सबसे छोटा जवाब (बाइट्स में) जीतता है।
ɜ, इसलिए यह अब एक पूर्ण सामान्य अमेरिकी स्वर सेट होना चाहिए।
biiiiiiiiiiiʒ("
ɜ, आपने इसे छोड़ दिया है :-) और ब्रिटिश उनके बारे में शिकायत करेंगेɒ