소개
DVORAK 키보드 레이아웃 과 다소 비슷 하지만 훨씬 어렵습니다.
먼저 한국어 키보드에 대해 이야기합시다. Wikipedia 에서 볼 수 있듯이 한국어 및 영어 키 세트간에 변경하는 Kor / Eng 키가 있습니다.
한국인은 때때로 틀린 유형 : 쿼티 키보드에서 한국어로 또는 2 세트 키보드에서 영어로 쓰려고합니다.
따라서 문제는 다음과 같습니다. 두 세트 키보드로 한국어 문자를 입력하면 쿼티 키보드로 입력 한 알파벳 문자로 변환하십시오. 쿼티로 입력 된 알파벳 문자가 있으면 2 세트 키보드로 변경하십시오.
2 세트 키보드
다음은 2 세트 키보드 레이아웃입니다.
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
그리고 shift 키로 :
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
맨 위 줄만 바뀌고 다른 줄은 바뀌지 않습니다.
한글 정보
여기서 끝났다면 쉬울 수 있지만 쉽지 않습니다. 입력 할 때
dkssud, tprP!
출력은 다음과 같이 표시되지 않습니다.
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
그러나 이런 식으로 :
안녕, 세계!(means Hello, World!)
그리고 일을 훨씬 어렵게 만듭니다.
한국어 문자는 '조성 (자음)', '정성 (음량)', '종성 (음절 끝의 자음 : 비워 둘 수 있음)'의 세 부분으로 구분되며 구분해야합니다.
다행히도 그렇게 할 수있는 방법이 있습니다.
분리하는 방법
초성 19 개, 중성 21 개, 종성 28 개 (공백 포함)가 있으며 0xAC00은 한자의 첫 문자 인 '가'입니다. 이를 사용하여 한자를 세 부분으로 나눌 수 있습니다. 다음은 2 세트 키보드에서 각각의 순서와 위치입니다.
choseong 주문 :
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
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
종성 질서 :
()ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
()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, 그리고 초성, 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의 조합입니다.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- 초성이 필요합니다. 만약 수단, 즉
frk주어지고있는ㄹㄱㅏ, 두 개의 방식으로 변경할 수있다 :ㄺㅏ및ㄹ가. 그런 다음 선택한 방식으로 변환해야합니다. 경우jjjrjr주어진되는ㅓㅓㅓㄱㅓㄱ선도적 인ㅓ들 초성 할 수 있습니다 아무것도하지 않지만, 네 번째ㅓ가ㄱ가로 바뀌도록, 즉 초성 할 수 있습니다ㅓㅓㅓ걱.
다른 예 : 세계( tprP). 섹ㅖ( (ㅅㅔㄱ)(ㅖ)) (으 ) 로 변경할 수 있지만 chooseong이 필요하기 때문에 세계( (ㅅㅔ)(ㄱㅖ)) (으 ) 로 변경되었습니다.
예
입력 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! ㅗ디ㅣㅐ, 째깅!
가장 짧은 코드가 승리합니다. (바이트)
편의를위한 새로운 규칙
A2 세트 키보드에 해당 문자 가없는 문자를 해제 할 수 있습니다 . 그래서 Aheui에 Aㅗ뎌ㅑOK입니다. 변경할 경우에, Aheui에 모뎌ㅑ, 당신은 얻을 수 -5 점을, 당신은 5 바이트를 적립 할 수 있습니다.
당신은 (같은 두 jungseongs 분리 할 수 있습니다 ㅘ에를 ㅗ+ㅏ). , 또는 을 좋아 rhk합니다 . 당신이 (처럼 결합하지만 만약 에 나 에게 ), 당신은 추가 -5 포인트를 적립 할 수 있습니다.고ㅏhowㅗㅐㅈrhk과howㅙㅈ
fjfau로 해석 될 수 있습니다 . 이 문제를 어떻게 해결합니까? 럶ㅕ럴며
tprP테스트 케이스 5 : 에이 변환 ㅅㅔㄱㅖ, ㅅ초성되고, ㅔjungseong이고 ㄱjongseong이다. 그래서이로 변환 should't 섷ㅖ(같은 그룹화 (ㅅㅔㄱ)(ㅖ)) 대신에 세계(같은 그룹화 (ㅅㅔ)(ㄱㅖ))? 이전 주석에서는 입력하여 해석한다고 말하므로 ㅅㅔㄱ로 변환 할 것으로 예상 됩니다 섷. 아니면 한국어가 왼쪽에서 오른쪽 대신 오른쪽에서 왼쪽으로 입력됩니까?
l후 누락 된 것 같습니다 .mlㅣ