キャラクター
これらのUnicode文字を英語のIPA子音と呼びましょう:
bdfhjklmnprstvwzðŋɡʃʒθ
そして、これらのUnicode文字を英語のIPA母音と呼びましょう :
aeiouæɑɔəɛɜɪʊʌː
(はい、ː
単なる長母音マークですが、この課題のために母音として扱います。)
最後に、これらは一次および二次ストレスマークです:
ˈˌ
ことに留意されたい
ɡ
(U + 0261)小文字gではなく、一次ストレスマーカーˈ
(U + 02C8が)アポストロフィではなく、ː
(U + 02D0)は、結腸ではありません。
あなたのタスク
単語が与えられたら、続く子音の上に母音を重ね、前に来る子音の下に強勢マーカーを置きます。(質問のタイトルが示唆するように、子音母音シーケンスがユニットとしてまとめられているような書記体系はabugidaと呼ばれます。)入力が与えられると、出力ˈ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
リファレンス実装
プログラムは、次のPythonスクリプトと同じ出力を生成する必要があります。
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()))
ルール
関数または完全なプログラムを作成できます。
プログラムにUnicode文字/文字列型がある場合、入力および出力がそれらを使用すると想定できます。そうでない場合、またはSTDINから読み取り/書き込みを行う場合は、UTF-8エンコードを使用します。
改行を含む文字列、行を表す文字列のリスト、またはUnicode文字の配列を作成できます。
出力の各行には、任意の量の末尾スペースを含めることができます。文字列を生成する場合、単一の末尾改行が含まれる場合があります。
プログラムは、任意の長さの母音連鎖を持つ任意の長さの単語に対して正しい出力を生成する必要がありますが、入力語は常に有効であると想定する場合があります。
ストレスマーカーがない場合、出力にはオプションで最終的な空の行が含まれることがあります(空または空白を含む)。
最短回答(バイト単位)が優先されます。
ɜ
したので、これは完全な一般的なアメリカの母音セットになります。
biiiiiiiiiiiʒ
「ミツバチではない」のようなテストケースを追加しない場合
ɜ
、あなたはそれを除外しました:-)そして、英国人は彼らについて不平を言うでしょうɒ