บทนำ
มันค่อนข้างเหมือนกับรูปแบบแป้นพิมพ์ DVORAKแต่ยากกว่ามาก
มาพูดถึงคีย์บอร์ดเกาหลีกันก่อนดีกว่า อย่างที่คุณเห็นในWikipediaมีคีย์ Kor / Eng เพื่อเปลี่ยนระหว่างชุดคีย์เกาหลีและอังกฤษ
บางครั้งคนเกาหลีพิมพ์ผิด: พวกเขาพยายามเขียนเป็นภาษาเกาหลีบนแป้นพิมพ์แบบ qwerty หรือภาษาอังกฤษบนแป้นพิมพ์สองชุด
ดังนั้นนี่คือปัญหา: หากมีตัวอักษรภาษาเกาหลีพิมพ์อยู่ในแป้นพิมพ์สองชุดให้แปลงเป็นอักขระตัวอักษรที่พิมพ์ด้วยแป้นพิมพ์แบบ qwerty หากตัวอักษรที่กำหนดให้พิมพ์เป็น qwerty ให้เปลี่ยนเป็นคีย์บอร์ดสองชุด
คีย์บอร์ดสองชุด
นี่คือรูปแบบแป้นพิมพ์สองชุด:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
และด้วยปุ่ม Shift:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
การเปลี่ยนแปลงแถวบนสุดในขณะที่คนอื่นไม่ทำ
เกี่ยวกับตัวละครเกาหลี
ถ้ามันจบลงที่นี่มันอาจจะง่าย แต่ไม่ใช่ เมื่อคุณพิมพ์
dkssud, tprP!
เอาท์พุทไม่ได้แสดงในลักษณะนี้:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
แต่ด้วยวิธีนี้:
안녕, 세계!(means Hello, World!)
และทำให้สิ่งต่าง ๆ ยากขึ้นมาก
ตัวอักษรเกาหลีแยกออกเป็นสามส่วน: 'Choseong (พยัญชนะ)', 'Jungseong (Vowel)' และ 'Jongseong (พยัญชนะท้ายพยางค์: ว่างเปล่า)' และคุณต้องแยกมันออก
โชคดีที่มีวิธีการทำเช่นนั้น
วิธีการแยก
มี 19 Choseong, 21 Jungseong, และ 28 Jongseong (ว่างเปล่า), และ 0xAC00 คือ '가', อักขระตัวแรกของตัวละครเกาหลี เมื่อใช้สิ่งนี้เราสามารถแยกตัวอักษรเกาหลีออกเป็นสามส่วน นี่คือลำดับของแต่ละตำแหน่งในแป้นพิมพ์สองชุด
เลือกเพื่อ:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
สั่งจองซอง:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
คำสั่ง 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
สมมติว่า(unicode value of some character) - 0xAC00
เป็นKorean_code
และดัชนีของ Choseong, Jungseong, Jongseong คือCho
, ,Jung
Jong
จากนั้นKorean_code
เป็น(Cho * 21 * 28) + Jung * 28 + Jong
นี่คือรหัสจาวาสคริปต์ที่แยกตัวอักษรเกาหลีออกจากเว็บไซต์เกาหลีนี้เพื่อความสะดวกของคุณ
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]);
เมื่อประกอบแล้ว
- โปรดทราบว่า
ㅘ
,ㅙ
,ㅚ
,ㅝ
,ㅞ
,ㅟ
,ㅢ
คือการรวมกันของ jungseongs อื่น ๆ
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong เป็นสิ่งที่จำเป็น ซึ่งหมายความว่าถ้า
frk
จะได้รับซึ่งเป็นㄹㄱㅏ
ก็สามารถเปลี่ยนแปลงได้ในวิธีที่สอง: และㄺㅏ
ㄹ가
จากนั้นคุณต้องแปลงมันเป็นวิธีที่เลือกไว้ หากjjjrjr
ได้รับซึ่งเป็นㅓㅓㅓㄱㅓㄱ
นำㅓ
s ไม่ได้มีอะไรที่สามารถ CHOSEONG แต่ที่สี่ㅓ
มีㄱ
ที่สามารถ CHOSEONGㅓㅓㅓ걱
จึงเปลี่ยนเป็น
ตัวอย่างอื่น: 세계
( tprP
) สามารถเปลี่ยนเป็น섹ㅖ
( (ㅅㅔㄱ)(ㅖ)
) ได้ แต่เนื่องจากจำเป็นต้องเลือกดังนั้นจึงเปลี่ยนเป็น세계
( (ㅅㅔ)(ㄱㅖ)
)
ตัวอย่าง
อินพุต 1
안녕하세요
เอาท์พุท 1
dkssudgktpdy
อินพุต 2
input 2
เอาท์พุท 2
ㅑㅞㅕㅅ 2
อินพุต 3
힘ㄴㄴ
เอาท์พุท 3
glass
อินพุต 4
아희(Aheui) is esolang which you can program with pure Korean characters.
เอาท์พุท 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
อินพุต 5
dkssud, tprP!
เอาท์พุท 5
안녕, 세계!
อินพุต 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
เอาท์พุท 6
hello, World! ㅗ디ㅣㅐ, 째깅!
รหัสที่สั้นที่สุดชนะ (เป็นไบต์)
กฎใหม่เพื่อความสะดวกของคุณ
คุณสามารถปิดอักขระที่ไม่มีตัวอักษรA
คู่ในคีย์บอร์ดสองชุด เพื่อAheui
ที่Aㅗ뎌ㅑ
จะตกลง แต่ถ้าคุณเปลี่ยนAheui
เป็น모뎌ㅑ
คุณจะได้รับ -5 คะแนนดังนั้นคุณสามารถรับ 5 ไบต์
คุณสามารถแยกสอง jungseongs (เหมือนㅘ
จะㅗ+ㅏ
) เหมือนrhk
ไป고ㅏ
หรือเพื่อhow
ㅗㅐㅈ
แต่ถ้าคุณรวม (ชอบrhk
ไป과
หรือhow
ไปㅙㅈ
) คุณสามารถสร้างรายได้เพิ่มเติม -5 จุด
fjfau
อาจจะตีความว่าเป็นหรือ럶ㅕ
럴며
เราจะแก้ไขปัญหานี้อย่างไร
tprP
การทดสอบในกรณีที่ 5: สิ่งนี้เปลี่ยนเป็นㅅㅔㄱㅖ
ที่เลือกㅅ
คืออะไรㅔ
คือจองซองและㄱ
จองซอง ดังนั้นสิ่งนี้ไม่ควรเปลี่ยนเป็น섷ㅖ
(จัดกลุ่มเหมือน(ㅅㅔㄱ)(ㅖ)
) แทนที่จะเป็น세계
(จัดกลุ่มชอบ(ㅅㅔ)(ㄱㅖ)
) ใช่ไหม ในความคิดเห็นก่อนหน้านี้คุณรัฐมันเป็นตีความโดยพิมพ์ดังนั้นผมจะคาดหวังที่จะกลายเป็นㅅㅔㄱ
섷
หรือพิมพ์ภาษาเกาหลีจากขวาไปซ้ายแทนซ้ายไปขวา
l
หลังจากสัญลักษณ์เกาหลีml
ㅣ