介绍
它有点像DVORAK键盘布局,但要难得多。
让我们先谈谈韩文键盘。正如您在Wikipedia中看到的那样,有一个Kor / Eng键可以在韩文和英文键集之间进行切换。
韩国人有时输入错误:他们试图在qwerty键盘上用韩语书写,或者在两组键盘上用英语书写。
因此,这就是问题所在:如果给定在两组键盘中输入的韩语字符,请将其转换为在qwerty键盘中键入的字母字符。如果使用qwerty输入了给定的字母字符,请将其更改为两组键盘。
两件套键盘
这是两套键盘布局:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
并使用shift键:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
仅第一行发生变化,而其他行则保持不变。
关于韩文字符
如果到此结束,这可能很容易,但是没有。当您键入
dkssud, tprP!
输出不会以这种方式显示:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
但是这样:
안녕, 세계!(means Hello, World!)
这使事情变得更加困难。
朝鲜语字符分为三部分:“宗城(辅音)”,“正城(元音)”和“正城(音节结尾的辅音:可以为空白)”,您必须将其分开。
幸运的是,有办法做到这一点。
如何分开
朝鲜有19个成城,21个成城和28个成城(带空白),0xAC00是朝鲜语的第一个字符“가”。使用此功能,我们可以将朝鲜语字符分为三个部分。这是两个键盘中每个键盘的顺序及其位置。
选择顺序:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
se城订单:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
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
,并CHOSEONG,Jungseong的指数,Jongseong是Cho
,Jung
,Jong
。
那Korean_code
是(Cho * 21 * 28) + Jung * 28 + Jong
为方便起见,以下是将韩文字符与该韩文网站分开的JavaScript代码。
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
给定的话,则ㅓㅓㅓㄱㅓㄱ
领导ㅓ
s没有可以选择的任何东西,但是第四个ㅓ
具有ㄱ
可以选择的东西,因此将其更改为ㅓㅓㅓ걱
。
又如:세계
(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:转换为ㅅㅔㄱㅖ
,其中ㅅ
一个choiceong,ㅔ
一个jungseong和ㄱ
一个jongseong。那么,是否应该将其转换为섷ㅖ
(分组为(ㅅㅔㄱ)(ㅖ)
)而不是세계
(分组为(ㅅㅔ)(ㄱㅖ)
)?在前面的评论中,您声明它是通过键入来解释的,因此我希望将ㅅㅔㄱ
其转换为섷
。还是朝鲜语是从右到左而不是从左到右打字?
l
后,ml
为韩国符号ㅣ
。