Giới thiệu
Nó hơi giống bố trí bàn phím DVORAK , nhưng RẤT NHIỀU.
Trước tiên hãy nói về bàn phím tiếng Hàn. Như bạn có thể thấy trong Wikipedia , có một khóa Kor / Eng để thay đổi giữa các bộ khóa tiếng Hàn và tiếng Anh.
Người Hàn đôi khi gõ sai: họ cố gắng viết bằng tiếng Hàn trên bàn phím qwerty hoặc bằng tiếng Anh trên bàn phím hai bộ.
Vì vậy, đây là vấn đề: nếu đưa ra các ký tự tiếng Hàn được gõ trong bàn phím hai bộ, hãy chuyển đổi nó thành các ký tự chữ cái được gõ trong bàn phím qwerty. Nếu được cung cấp các ký tự chữ cái được gõ bằng qwerty, hãy đổi nó thành bàn phím hai bộ.
Bàn phím hai bộ
Đây là cách bố trí bàn phím hai bộ:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
và với phím shift:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
chỉ hàng trên cùng thay đổi trong khi những người khác thì không.
Về nhân vật Hàn Quốc
nếu nó kết thúc ở đây, nó có thể dễ dàng, nhưng không. Khi bạn gõ
dkssud, tprP!
đầu ra không được hiển thị theo cách này:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
nhưng theo cách này:
안녕, 세계!(means Hello, World!)
và nó làm cho mọi thứ khó khăn hơn nhiều.
Các ký tự tiếng Hàn tách thành ba phần: 'Choseong (phụ âm)', 'Jungseong (nguyên âm)' và 'Jongseong (phụ âm ở cuối âm tiết: có thể để trống)', và bạn phải tách nó ra.
May mắn thay, có cách để làm điều đó.
Cách tách
Có 19 Choseong, 21 Jungseong và 28 Jongseong (trống) và 0xAC00 là '가', nhân vật đầu tiên của các nhân vật Hàn Quốc. Sử dụng điều này, chúng ta có thể tách các ký tự tiếng Hàn thành ba phần. Dưới đây là thứ tự của mỗi và vị trí của nó trong bàn phím hai bộ.
đơn hàng đã chọn:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
trật tự rừng rậm:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
thứ tự 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
Hãy nói (unicode value of some character) - 0xAC00
là Korean_code
, và chỉ số của đệm Choseong, tự đệm Jungseong, Jongseong là Cho
, Jung
, Jong
.
Sau đó, Korean_code
là(Cho * 21 * 28) + Jung * 28 + Jong
Đây là mã javascript tách biệt ký tự tiếng Hàn khỏi trang web tiếng Hàn này, để thuận tiện cho bạn.
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]);
Khi lắp ráp
- Lưu ý rằng
ㅘ
,ㅙ
,ㅚ
,ㅝ
,ㅞ
,ㅟ
,ㅢ
là sự kết hợp của jungseongs khác.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong là cần thiết. Điều đó có nghĩa là, nếu
frk
được đưa ra, nghĩa làㄹㄱㅏ
, nó có thể thay đổi theo hai cách:ㄺㅏ
vàㄹ가
. Sau đó, bạn phải chuyển đổi nó thành một cách đã chọn. Nếujjjrjr
được đưa ra, đó làㅓㅓㅓㄱㅓㄱ
, hàng đầuㅓ
không có bất cứ thứ gì có thể được chọn, nhưng thứ tưㅓ
cóㄱ
thể được chọn, vì vậy nó được đổi thànhㅓㅓㅓ걱
.
Một ví dụ khác: 세계
( tprP
). Nó có thể được đổi thành 섹ㅖ
( (ㅅㅔㄱ)(ㅖ)
), nhưng vì đã chọn là cần thiết nên nó đã đổi thành 세계
( (ㅅㅔ)(ㄱㅖ)
)
Ví dụ
đầu vào 1
안녕하세요
đầu ra 1
dkssudgktpdy
đầu vào 2
input 2
đầu ra 2
ㅑㅞㅕㅅ 2
đầu vào 3
힘ㄴㄴ
đầu ra 3
glass
đầu vào 4
아희(Aheui) is esolang which you can program with pure Korean characters.
đầu ra 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
đầu vào 5
dkssud, tprP!
đầu ra 5
안녕, 세계!
đầu vào 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
đầu ra 6
hello, World! ㅗ디ㅣㅐ, 째깅!
Mã ngắn nhất sẽ thắng. (tính bằng byte)
Quy tắc mới cho bạn thuận tiện
Bạn có thể loại bỏ các ký tự A
không có đối tác trong bàn phím hai bộ. nên Aheui
để Aㅗ뎌ㅑ
là OK. Nhưng, nếu bạn đổi Aheui
thành 모뎌ㅑ
, bạn có thể nhận được -5 điểm, vì vậy bạn có thể kiếm được 5 byte.
Bạn có thể tách hai jungseongs (như ㅘ
để ㅗ+ㅏ
). như rhk
để 고ㅏ
, hoặc how
để ㅗㅐㅈ
. Nhưng nếu bạn kết hợp nó (như rhk
để 과
hoặc how
để ㅙㅈ
), bạn có thể kiếm thêm -5 điểm.
fjfau
có thể được hiểu là 럶ㅕ
hoặc 럴며
. Làm thế nào để chúng ta giải quyết điều này?
tprP
trong trường hợp thử nghiệm 5: điều này biến thành ㅅㅔㄱㅖ
, nơi ㅅ
là một người được chọn, ㅔ
là một người đi rừng và ㄱ
là một jongseong. Vì vậy, không nên chuyển đổi thành 섷ㅖ
(nhóm như (ㅅㅔㄱ)(ㅖ)
) thay vì 세계
(nhóm như (ㅅㅔ)(ㄱㅖ)
)? Trong một bình luận trước đó, bạn nêu nó là diễn giải bằng cách gõ, vì vậy tôi sẽ mong đợi ㅅㅔㄱ
chuyển thành 섷
. Hay là gõ tiếng Hàn từ phải sang trái thay vì trái sang phải?
l
sauml
cho biểu tượng Hàn Quốcㅣ
.