Karakter kana Jepang berhubungan dengan satu suara dalam bahasa Jepang. Dengan pengecualian ん ( n ), setiap kana lainnya terdiri dari bagian konsonan dan bagian vokal. Ada pemesanan alami untuk kana Jepang, semacam "urutan alfabet", yang biasanya disusun dalam tabel 10 dengan 5:
| a i u e o
-----------------------------
* | a i u e o
k | ka ki ku ke ko
s | sa si su se so
t | ta ti tu te to
n | na ni nu ne no
h | ha hi hu he ho
m | ma mi mu me mo
y | ya yu yo
r | ra ri ru re ro
w | wa wo
Pemesanan ini disebut gojuuon , atau "lima puluh suara", meskipun beberapa dari lima puluh sel dalam tabel sebenarnya kosong.
Tantangan
Masukan akan berupa kana yang terdaftar di atas, dengan pengecualian wo . Program atau fungsi Anda harus menampilkan kana berikutnya dalam urutan bacaan dari kiri ke kanan, dari atas ke bawah, misalnya:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
Dengan pengecualian dari single trailing newline opsional, seharusnya tidak ada spasi spasi tambahan di belakang.
Ini adalah kode-golf , jadi tujuannya adalah untuk meminimalkan ukuran program, dalam byte.
Catatan tambahan
Agar hal-hal sederhana, tantangan ini menggunakan romanisasi Nihon-shiki . Romanisasi Hepburn lebih umum, tetapi memiliki beberapa kekusutan yang membuat hal-hal lebih mengganggu untuk golf (misalnya si menjadi shi , hu menjadi fu ).
Kana memang ada untuk tempat-tempat kosong (lihat SE Jepang ), tetapi mereka entah non-standar atau sekarang usang.
sumber
wo
transformasi ken
loop manaa
.Jawaban:
Retina ,
5453 byteCobalah online.
Penjelasan
Wooo, memamerkan lebih banyak fitur dari rilis 0.7.2 hari ini. :) ( Rilis mendahului tantangan ini sekitar 7 jam.)
Ini adalah transliterasi yang menggantikan
a
dengani
danu
dengane
, tetapi hanya dalam kecocokan dengany.
. Tujuannya adalah untuk memperlakukanya
danyu
menyukaiyi
danye
, masing-masing, untuk melewati celah.Ganti
wa
denganwe
untuk melewati celah itu juga.Ini adalah fitur baru. Saat memutar set karakter, set "dari" dan "ke" dalam transliterasi biasanya hampir sama. Jadi sekarang kita punya
o
(tanpa backslash) untuk merujuk ke set lain, yang memungkinkan kita untuk menyingkirkan beberapa duplikasi. Yang\o
benar - benar singkatan dari literalo
dalam kasus itu. Jadi dua set berkembang menjadi:Yang asing
a
pada set kedua diabaikan dan vokal diganti secara siklis seperti yang diharapkan.Ini melakukan hal yang sama untuk konsonan, tetapi menggunakan
o
di set pertama (hanya karena kita bisa ...).h
danw
perlu melarikan diri karena mereka adalah kelas karakter. Set diperluas adalah:The
.a
Membatasi operasi ini untuk suku kata yang berakhir padaa
, yaitu orang-orang yang membungkus ke baris berikutnya dari tabel.Akhirnya, kami mengganti satu
a
denganka
, karena kasus itu tidak dapat ditangani oleh transliterasi sebelumnya.sumber
Ruby, 105
Berkomentar dalam program uji
sumber
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
:, meskipun saya memiliki kecurigaan yang menyelinap itu bisa golf lebih lanjut.GNU sed, 65
Komentar tidak termasuk dalam skor:
Oy, ini mulai sangat mirip dengan @ Martin jawaban Retina (tapi lebih lama, tentu saja).
sumber
Pyth,
424038 byteIni mengambil produk luar antara vokal dan konsonan, dan menghilangkan elemen pada ords dari setiap angka dalam
$&./0
. Kemudian output elemen setelah input.Coba di sini .
sumber
TXR Lisp,
13512712491 byteMenjalankan:
sumber
Bash + sed, 83
yi
,ye
,wi
,wu
danwe
sumber
JavaScript,
145162131118 byteAkui saja, Anda tidak dapat membayangkan solusi yang lebih konyol untuk menyelesaikan masalah ini;)ok, lakukan ini dengan cara yang lebih menarik.Demo:
sumber
Japt,
757068 byteCobalah online!
sumber
X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
} }
:)Haskell,
11496 byte[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]
adalah daftar semua kanas, termasuk "lubang". Saya memecah daftar menjadi bagian sebelum input kana dan dari input kana hingga akhir. Dari bagian 2 saya memilih elemen kedua. Pengecualian di sekitar "lubang" sebelumnya ditangkap oleh kasus yang terpisah.Sunting: @xnor datang dengan ide menggunakan
span
yang disimpan 18 byte.sumber
(snd$span(/=x)k)!!1
tidak berfungsi untuk pencarian?Perl 6, 105 byte
Ini sesingkat yang saya bisa pada pertama saya pergi, saya mungkin punya celah lain nanti tapi saya merasa cukup baik tentang ini.
sumber
JavaScript (ES6), 127 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
Perl 6, 96 byte
sumber
Python 2, 107 byte
Mengharapkan input yang dilampirkan dalam tanda kutip,
'he'
misalnyasumber
Racket 151 byte
Tidak Disatukan:
Pengujian:
Keluaran:
Ada pesan kesalahan jika 'dikirim.
sumber
C,
138135 byteWandbox
sumber