Romanisasi bahasa Jepang mengubah teks bahasa Jepang menjadi karakter Latin. Dalam tantangan ini, Anda akan diberikan string karakter Jepang sebagai input dan diharapkan untuk mengubahnya menjadi string ASCII yang benar.
Yang Perlu Anda Ketahui
Bahasa Jepang memiliki tiga sistem penulisan: hiragana (kurva yang digunakan untuk kata-kata pendek), katakana (sudut-y yang digunakan untuk bunyi dan kata-kata yang dipinjam dari bahasa lain), dan kanji (karakter padat yang berasal dari bahasa Cina). Dalam tantangan ini kita hanya akan mengkhawatirkan hiragana.
Ada 46 karakter di suku kata hiragana. Setiap karakter mewakili suku kata. Karakter diatur oleh bunyi pertama (konsonan) dan bunyi kedua (vokal). Kolom secara berurutan adalah aiueo
.
: あいうえお
k: かきくけこ
s: さしすせそ
t: たちつてと
n: なにぬねの
h: はひふへほ
m: まみむめも
y: や ゆ よ
r: らりるれろ
w: わ を
N: ん
(jika Anda menyalin dan menempel tabel ini, perhatikan bahwa saya telah menggunakan spasi ideografi U + 3000 untuk menghapus y dan w)
Jadi, misalnya, あ と め harus menghasilkan output atome
. Karakter pertama adalah a
, yang kedua adalah to
, dan yang ketiga adalah me
.
Pengecualian
Seperti bahasa yang bagus, bahasa Jepang memiliki pengecualian terhadap aturannya, dan tabel hiragana memiliki beberapa. Karakter-karakter ini diucapkan sedikit berbeda dari yang ditunjukkan oleh lokasinya dalam tabel:
し: shi
, bukan si
ち: chi
, bukan ti
つ: tsu
, bukan tu
ふ: fu
, tidakhu
Dakuten ゛
Kata 'dakuten' berarti 'tanda berlumpur': sang dakuten mengubah suara menjadi padanan suaranya (biasanya); misalnya, かka
berubah menjadi か ゛ga
. Daftar lengkap perubahan:
k
→ g
s
→ z
t
→ d
h
→b
Pengecualian juga berubah: し ゛: ji
(atau zhi
), bukan zi
ち ゛: ji
, bukan di
つ ゛: dzu
, tidak du
(ふ ゛ bertindak seperti yang Anda harapkan; ini bukan pengecualian)
Handakuten adalah karakter tambahan゜ yang berlaku untuk h
baris. Jika ditempatkan setelah karakter, itu mengubah suara karakter menjadi p
daripada b
.
Baik dakuten dan handakuten akan diberikan sebagai karakter individu. Anda tidak perlu berurusan dengan formulir yang dikomposisi sebelumnya atau karakter yang menggabungkan.
Karakter kecil
Akhirnya, ada versi kecil dari beberapa karakter. Mereka memodifikasi karakter yang datang sebelum atau sesudahnya.
ゃ ゅ ょ
Ini adalah bentuk kecil ya
, yu
dan yo
. Mereka hanya ditempatkan setelah suara di i
kolom; mereka menghapus i
dan menambahkan suara mereka. Jadi, き や berubah menjadi kiya
; き ゃ berubah menjadi kya
.
Jika ditempatkan setelah chi
atau shi
(atau bentuk dakuten-ed mereka), y
itu dihapus juga. し ゆ adalah shiyu
; し ゅ adalah shu
.
Hal terakhir yang harus Anda tangani adalah hal kecil tsu
. っ menggandakan konsonan yang datang setelah itu, tidak peduli apa; tidak melakukan apa-apa lagi. Misalnya, き た adalah kita
; き っ た adalah kitta
.
Ringkasan, Input, dan Output
Program Anda harus bisa transliterasi: 46 hiragana dasar, bentuk dakuten dan handakuten mereka, dan kombinasinya dengan karakter kecil.
Perilaku tidak terdefinisi meliputi: kecil ya
, yu
dan yo
tidak setelah karakter dengan i
, kecil tsu
di akhir string, dakuten pada karakter yang tidak terpengaruh, handakuten pada p
karakter non- , dan apa pun yang tidak disebutkan dalam spesifikasi / pengantar di atas.
Anda dapat menganggap semua input valid dan hanya berisi karakter Jepang yang disebutkan di atas.
Kasus tidak menjadi masalah dalam output; Anda juga dapat mengganti r
dengan l
atau sendirian n
dengan m
. Output dapat memiliki satu ruang antara setiap suku kata atau tanpa spasi sama sekali.
Ini adalah kode-golf : kode terpendek dalam byte menang.
Uji Kasus
Banyak kasus uji untuk masing-masing bagian diberikan dalam spesifikasi. Beberapa kasus tambahan:
ひ ら か ゛ な → hiragana
か た か な → katakana
た ゛ い き ゛ ゃ く て て ん い い は ん → daigyakutensaiban
ふ ゜ ろ く ゛ ら み ん く く ゛ は ゜ ゛ る る こ こ う と ゛ ゛ こ る る ふ → puroguramingupazurucoudogorufu
か ゛ ん ほ ゛ っ て → ganbatte
Catatan
Saya tidak tahu banyak bahasa Jepang selain apa yang saya tulis di sini. Tolong beri tahu saya jika saya melakukan kesalahan.
Saya awalnya berencana untuk memasukkan katakana juga (jadi kasus tes transliterasi bahasa Inggris saya bisa sedikit lebih akurat), tetapi itu akan terlalu banyak untuk tantangan kode golf.
Nama-nama Unicode termasuk transliterasi setiap karakter secara individual, tetapi tanpa pengecualian. Ini mungkin atau mungkin tidak bermanfaat bagi Anda.
Berkat squeamishossifrage untuk mengoreksi dua kesalahan ketik!
Maaf jika ini terlalu panjang; Saya berusaha memasukkan sebagian besar keanehan hiragana ke dalam tantangan, tetapi beberapa hal (seperti hiragana yang hanya menggunakan vokal kecil, ganti n ke m di depan beberapa konsonan, dan tanda pengulangan) harus dipotong untuk menjaga agar tantangan dapat dikelola.
Saya sama sekali tidak menyesal dengan judulnya. Itu adalah sebuah mahakarya.
っし
menjadi sshi
atau shshi
?
I'm not at all sorry for the title. It's a masterpiece.
Downvoted
きっった
?