AOJ 2020 - Princess's Japanese
Princess's Japanese | Aizu Online Judge
問題
御姫様が日本語を勉強する。ローマ字が与えられる。無声化する母音を求める。文字列処理。
注意した点
M <- 無声子音 M <- 直前が無声子音の y P <- 促音 I <- i, u A <- a O <- o E <- e N <- other
- 語句の末尾にMをつける。
- 長音や撥音は個別に処理する必要がない。
- a, o は"同一の母音が無声子音とともに連続する2つ以上の拍で現れた"ときにのみ無声化するので個別で認識する必要がある。
- e は"直近の母音が無声化されなかった場合"を識別するために使用する。
このルールに基づいて語句を変換する
例
kusa -> MIMAM hakata -> MAMAMAM kippu -> MIPMIM sasakisan -> MAMAMIMAN hottokouhii -> MOPMOMOIMIIM totyo -> MOMMOM zen'i -> NENNIM turane -> MINANEM
以上のように変換したうえで母音を探す。
FOR(i, 1, scc.length() - 1){ switch (scc[i]){ case 'I': ......
検索結果が以下のリストの一文字目の母音にあたりかつ直前の母音が無声音でない場合は、見つかった母音を無声音とする。
- MIM
- MIPM
- MAMA
- MAMMA
- MOMO
- MOMMO
i番目の文字が無声音かどうかはvbによって管理した。
vb result(scc.length(), false);
pmは直前の母音が無声音であったかどうかである。
bool pm = false;
MIMのケースに関してはyの存在を意識し、問題がないことを確認したが、MAMA, MOMOに関してはyを失念していたのでそこでなかなかの時間を要した。