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) - 0xAC00
adalah Korean_code
, dan indeks Choseong, Jungseong, Jongseong adalah Cho
, Jung
,Jong
.
Lalu, Korean_code
adalah(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
frk
diberikan, yangㄹㄱㅏ
dapat berubah dalam dua cara:ㄺㅏ
danㄹ가
. Kemudian, Anda harus mengubahnya menjadi cara yang telah memilih. Jikajjjrjr
diberikan, 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 A
yang tidak memiliki pasangannya di papan ketik dua set. sehingga Aheui
untuk Aㅗ뎌ㅑ
OK. Tapi, jika Anda mengubah Aheui
ke모뎌ㅑ
, Anda bisa mendapatkan -5 poin, sehingga Anda bisa mendapatkan 5 byte.
Anda dapat memisahkan dua jungseongs (seperti ㅘ
untuk ㅗ+ㅏ
). seperti rhk
untuk 고ㅏ
, atau how
untuk ㅗㅐㅈ
. Tapi jika Anda menggabungkan itu (seperti rhk
untuk 과
atau how
ke ㅙㅈ
), Anda bisa mendapatkan tambahan -5 poin.
fjfau
bisa diartikan sebagai 럶ㅕ
atau 럴며
. Bagaimana kita menyelesaikan ini?
tprP
dalam 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?
l
setelahml
untuk simbol Koreaㅣ
.