pengantar
Ini agak seperti tata letak Keyboard DVORAK , tapi JAUH lebih keras.
Mari kita bicara tentang keyboard Korea terlebih dahulu. Seperti yang Anda lihat di Wikipedia , ada kunci Kor / Eng untuk mengubah antara set kunci Korea dan Inggris.
Orang Korea terkadang salah ketik: mereka mencoba menulis dalam bahasa Korea pada keyboard qwerty atau dalam bahasa Inggris pada keyboard dua set.
Jadi, inilah masalahnya: jika diberikan karakter Korea yang diketik dalam keyboard dua set, ubahlah ke karakter alfabet yang diketik dalam keyboard qwerty. Jika diberi karakter alfabet yang diketik dalam qwerty, ubah ke keyboard dua set.
Keyboard dua set
Berikut adalah tata letak keyboard dua-set:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
dan dengan tombol shift:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
hanya baris atas yang berubah sementara yang lain tidak.
Tentang Karakter Korea
jika berakhir di sini, itu bisa mudah, tetapi tidak. Saat Anda mengetik
dkssud, tprP!
output tidak ditampilkan dengan cara ini:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
tetapi dengan cara ini:
안녕, 세계!(means Hello, World!)
dan itu membuat segalanya menjadi lebih sulit.
Karakter Korea terpisah menjadi tiga bagian: 'Choseong (konsonan)', 'Jungseong (Vowel)', dan 'Jongseong (konsonan di akhir suku kata: bisa kosong)', dan Anda harus memisahkannya.
Untungnya, ada cara untuk melakukan itu.
Cara memisahkan
Ada 19 Choseong, 21 Jungseong, dan 28 Jongseong (dengan kosong), dan 0xAC00 adalah '가', karakter pertama dari karakter Korea. Dengan ini, kita dapat memisahkan karakter Korea menjadi tiga bagian. Berikut adalah urutan masing-masing dan posisinya di keyboard dua set.
Pesananong:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
pesanan jungseong:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
pesanan jongseong:
()ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
()r R rt s sw sg e f fr fa fq ft fx fv fg a q qt t T d w c z x v g
Mari mengatakan (unicode value of some character) - 0xAC00adalah Korean_code, dan indeks Choseong, Jungseong, Jongseong adalah Cho, Jung,Jong .
Lalu, Korean_codeadalah(Cho * 21 * 28) + Jung * 28 + Jong
Berikut adalah kode javascript yang memisahkan karakter Korea dari situs web Korea ini, untuk kenyamanan Anda.
var rCho = [ "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" ];
var rJung =[ "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ" ];
var rJong = [ "", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ","ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" ];
var cho, jung, jong;
var sTest = "탱";
var nTmp = sTest.charCodeAt(0) - 0xAC00;
jong = nTmp % 28; // Jeongseong
jung = ((nTmp - jong) / 28 ) % 21 // Jungseong
cho = ( ( (nTmp - jong) / 28 ) - jung ) / 21 // Choseong
alert("Choseong:" + rCho[cho] + "\n" + "Jungseong:" + rJung[jung] + "\n" + "Jongseong:" + rJong[jong]);
Saat dirakit
- Perhatikan bahwa
ㅘ,ㅙ,ㅚ,ㅝ,ㅞ,ㅟ,ㅢadalah kombinasi dari jungseongs lainnya.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong diperlukan. Itu berarti, jika
frkdiberikan, yangㄹㄱㅏdapat berubah dalam dua cara:ㄺㅏdanㄹ가. Kemudian, Anda harus mengubahnya menjadi cara yang telah memilih. Jikajjjrjrdiberikan, yaituㅓㅓㅓㄱㅓㄱ, pemimpinㅓtidak memiliki apa pun yang dapat dipilih, tetapi yang keempatㅓmemilikiㄱdapat dipilih, sehingga diubah menjadiㅓㅓㅓ걱.
Contoh lain: 세계( tprP). Itu dapat diubah menjadi 섹ㅖ( (ㅅㅔㄱ)(ㅖ)), tetapi karena memilihong diperlukan, itu diubah menjadi 세계( (ㅅㅔ)(ㄱㅖ))
Contohnya
masukan 1
안녕하세요
output 1
dkssudgktpdy
masukan 2
input 2
output 2
ㅑㅞㅕㅅ 2
masukan 3
힘ㄴㄴ
keluaran 3
glass
masukan 4
아희(Aheui) is esolang which you can program with pure Korean characters.
keluaran 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
masukan 5
dkssud, tprP!
output 5
안녕, 세계!
input 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
output 6
hello, World! ㅗ디ㅣㅐ, 째깅!
Kode terpendek menang. (dalam byte)
Aturan baru untuk kenyamanan Anda
Anda dapat mengabaikan karakter seperti Ayang tidak memiliki pasangannya di papan ketik dua set. sehingga Aheuiuntuk Aㅗ뎌ㅑOK. Tapi, jika Anda mengubah Aheuike모뎌ㅑ , Anda bisa mendapatkan -5 poin, sehingga Anda bisa mendapatkan 5 byte.
Anda dapat memisahkan dua jungseongs (seperti ㅘuntuk ㅗ+ㅏ). seperti rhkuntuk 고ㅏ, atau howuntuk ㅗㅐㅈ. Tapi jika Anda menggabungkan itu (seperti rhkuntuk 과atau howke ㅙㅈ), Anda bisa mendapatkan tambahan -5 poin.
fjfaubisa diartikan sebagai 럶ㅕatau 럴며. Bagaimana kita menyelesaikan ini?
tprPdalam kasus uji 5: ini berubah menjadi ㅅㅔㄱㅖ, di mana ㅅChoongong, ㅔadalah jungseong dan ㄱadalah sebuah tongong. Jadi bukankah seharusnya ini berubah menjadi 섷ㅖ(dikelompokkan seperti (ㅅㅔㄱ)(ㅖ)), bukan 세계(dikelompokkan seperti (ㅅㅔ)(ㄱㅖ))? Dalam komentar sebelumnya Anda menyatakan itu ditafsirkan dengan mengetik, jadi saya berharap ㅅㅔㄱuntuk berubah menjadi 섷. Atau apakah pengetikan bahasa Korea dari kanan ke kiri bukan dari kiri ke kanan?
lsetelahmluntuk simbol Koreaㅣ.