Giriş
DVORAK Klavye düzenine benziyor , ancak çok daha zor.
Önce Korece klavye hakkında konuşalım. Wikipedia'da görebileceğiniz gibi , Korece ve İngilizce anahtar kümeleri arasında geçiş yapmak için bir Kor / Eng anahtarı vardır.
Koreliler bazen yanlış yazıyorlar: qwerty klavyede Korece veya iki setli klavyede İngilizce yazmaya çalışıyorlar.
Yani, sorun şu: iki setli klavyede yazılmış Korece karakterler verilirse, qwerty klavyede yazılmış alfabetik karakterlere dönüştürün. Qwerty ile yazılmış alfabetik karakterler verildiyse, bunu iki setli klavyeyle değiştirin.
İki Setli Klavye
İşte iki setli klavye düzeni:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
ve üst karakter tuşuyla:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
diğerleri değil sadece üst sıra değişir.
Korece Karakterler Hakkında
burada biterse, kolay olabilir, ama hayır. Yazdığınızda
dkssud, tprP!
çıktı şu şekilde gösterilmez:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
ama bu şekilde:
안녕, 세계!(means Hello, World!)
ve işleri daha da zorlaştırıyor.
Korece Karakterler üç bölüme ayrılır: 'Choseong (ünsüz)', 'Jungseong (Ünlü)' ve 'Jongseong (hecenin sonunda ünsüz: boş olabilir)' ve ayırmanız gerekir.
Neyse ki, bunu yapmanın bir yolu var.
Nasıl ayrılabilir
19 Choseong, 21 Jungseong ve 28 Jongseong (boşluklu) var ve 0xAC00 Korece karakterlerin ilk karakteri olan '가'. Bunu kullanarak Korece karakterleri üç parçaya ayırabiliriz. İşte her birinin sırası ve iki setli klavyedeki konumu.
choseong sipariş:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
jungseong sipariş:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
jongseong sipariş:
()ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
()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
Diyelim diyelim (unicode value of some character) - 0xAC00olduğunu Korean_codeve CHOSEONG, Jungseong endeksi, Jongseong olduğunu Cho, Jung, Jong.
Sonra Korean_codeise(Cho * 21 * 28) + Jung * 28 + Jong
Rahatınız için Korece karakteri bu Korece web sitesinden ayıran javascript kodu .
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]);
Monte edildiğinde
- Not
ㅘ,ㅙ,ㅚ,ㅝ,ㅞ,ㅟ,ㅢdiğer jungseongs bir kombinasyonudur.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong gerekli. Bu
frk, verilirse,ㄹㄱㅏiki şekilde değişebileceği anlamına gelir :ㄺㅏveㄹ가. Sonra, choseong olan bir şekilde dönüştürmek zorunda. Eğerjjjrjrverilen hangiㅓㅓㅓㄱㅓㄱliderㅓler CHOSEONG edilebilir bir şey yok, ama dördüncüㅓvardırㄱo içine değişti böylece, o CHOSEONG edilebilirㅓㅓㅓ걱.
Başka bir örnek: 세계( tprP). 섹ㅖ( (ㅅㅔㄱ)(ㅖ)) Olarak değiştirilebilir , ancak choseong gerekli olduğundan, 세계( (ㅅㅔ)(ㄱㅖ)) olarak değiştirilir
Örnekler
girdi 1
안녕하세요
çıktı 1
dkssudgktpdy
girdi 2
input 2
çıktı 2
ㅑㅞㅕㅅ 2
girdi 3
힘ㄴㄴ
çıktı 3
glass
girdi 4
아희(Aheui) is esolang which you can program with pure Korean characters.
çıktı 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
girdi 5
dkssud, tprP!
çıktı 5
안녕, 세계!
girdi 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
çıktı 6
hello, World! ㅗ디ㅣㅐ, 째깅!
En kısa kod kazanır. (bayt cinsinden)
Size kolaylık sağlamak için yeni kural
Aİki setli klavyede benzerleri olmayan karakterleri kapatabilirsiniz . böylece Aheuiiçin Aㅗ뎌ㅑsorun yok. Değiştirmek Ama eğer Aheuiüzere 모뎌ㅑ, alabilirsiniz -5 noktası, sen 5 bayt kazanabilmesi için.
Sen (gibi iki jungseongs ayırabilirsiniz ㅘiçin ㅗ+ㅏ). gibi rhkhiç 고ㅏveya howhiç ㅗㅐㅈ. Eğer (gibi birleştirin Ama eğer rhkhiç 과ya howkadar ㅙㅈ), ek -5 puan kazanabilirsiniz.
fjfauolarak yorumlanabilir . Bunu nasıl çözeriz? 럶ㅕ럴며
tprPtesti durumda 5: Bu dönüşümler ㅅㅔㄱㅖ, ㅅbir CHOSEONG olan, ㅔbir Jungseong ve ㄱbir jongseong olup. Yani bu dönüşmek should't 섷ㅖ(gibi gruplandırılmış (ㅅㅔㄱ)(ㅖ)) yerine 세계(gibi gruplandırılmış (ㅅㅔ)(ㄱㅖ))? Daha önceki bir yorumda, yazarak yorumlandığını belirtiyorsunuz, bu yüzden ㅅㅔㄱdönüşmeyi bekliyordum 섷. Veya Korece yazım soldan sağa değil sağdan sola mı?
lsonramlKoreli sembolü içinㅣ.