introduction
C'est un peu comme la disposition du clavier DVORAK , mais BEAUCOUP plus difficile.
Parlons d'abord du clavier coréen. Comme vous pouvez le voir sur Wikipedia , il existe une clé Kor / Eng pour basculer entre les jeux de clés coréens et anglais.
Les Coréens tapent parfois mal: ils essaient d'écrire en coréen sur un clavier qwerty ou en anglais sur un clavier à deux jeux.
Donc, voici le problème: si des caractères coréens donnés sont saisis sur un clavier à deux jeux, convertissez-les en caractères alphabétiques tapés sur le clavier qwerty. Si des caractères alphabétiques donnés sont saisis dans qwerty, remplacez-le par un clavier à deux jeux.
Clavier à deux jeux
Voici la disposition du clavier à deux ensembles:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
et avec la touche shift:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
seule la rangée du haut change tandis que les autres ne le font pas.
À propos des caractères coréens
si ça se terminait ici, ça pourrait être facile, mais non. Lorsque vous tapez
dkssud, tprP!
la sortie n'est pas affichée de cette manière:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
mais de cette façon:
안녕, 세계!(means Hello, World!)
et cela rend les choses beaucoup plus difficiles.
Les caractères coréens sont séparés en trois parties: «Choseong (consonne)», «Jungseong (voyelle)» et «Jongseong (consonne à la fin de la syllabe: peut être vide)», et vous devez le séparer.
Heureusement, il existe un moyen de le faire.
Comment se séparer
Il y a 19 Choseong, 21 Jungseong et 28 Jongseong (avec blanc), et 0xAC00 est '가', premier caractère des caractères coréens. En utilisant cela, nous pouvons séparer les caractères coréens en trois parties. Voici l'ordre de chacun et sa position sur un clavier à deux jeux.
ordre choisi:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
ordre jungseong:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
ordre de 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
Let dire l' (unicode value of some character) - 0xAC00
est Korean_code
, et l' indice de TCH'ÔSONG, djoungsong, Jongseong est Cho
, Jung
, Jong
.
Alors, Korean_code
est(Cho * 21 * 28) + Jung * 28 + Jong
Voici le code javascript qui sépare le caractère coréen de ce site Web coréen, pour votre commodité.
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]);
Une fois assemblé
- Notez que
ㅘ
,ㅙ
,ㅚ
,ㅝ
,ㅞ
,ㅟ
,ㅢ
est une combinaison d'autres jungseongs.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong est nécessaire. Cela signifie que si
frk
est donné, ce qui signifieㄹㄱㅏ
qu'il peut changer de deux manières:ㄺㅏ
etㄹ가
. Ensuite, vous devez le convertir d'une manière qui a choisiong. S'ils sontjjjrjr
donnés, c'est-à-direㅓㅓㅓㄱㅓㄱ
, les principauxㅓ
n'ont rien qui puisse être choisi, mais le quatrièmeㅓ
aㄱ
qui peut être choisi, alors c'est changé enㅓㅓㅓ걱
.
Un autre exemple: 세계
( tprP
). Il peut être changé en 섹ㅖ
( (ㅅㅔㄱ)(ㅖ)
), mais comme chose est nécessaire, il est changé en 세계
( (ㅅㅔ)(ㄱㅖ)
)
Exemples
entrée 1
안녕하세요
sortie 1
dkssudgktpdy
entrée 2
input 2
sortie 2
ㅑㅞㅕㅅ 2
entrée 3
힘ㄴㄴ
sortie 3
glass
entrée 4
아희(Aheui) is esolang which you can program with pure Korean characters.
sortie 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
entrée 5
dkssud, tprP!
sortie 5
안녕, 세계!
entrée 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
sortie 6
hello, World! ㅗ디ㅣㅐ, 째깅!
Le code le plus court gagne. (en octets)
Nouvelle règle pour votre commodité
Vous pouvez ignorer des caractères comme ceux A
qui n'ont pas d'équivalent dans un clavier à deux jeux. donc Aheui
à Aㅗ뎌ㅑ
est OK. Mais, si vous passez Aheui
à 모뎌ㅑ
, vous pouvez obtenir -5 points, vous pouvez donc gagner 5 octets.
Vous pouvez séparer deux jungseongs (comme ㅘ
pour ㅗ+ㅏ
). comme rhk
à 고ㅏ
, ou how
à ㅗㅐㅈ
. Mais si vous le combinez (comme rhk
à 과
ou how
à ㅙㅈ
), vous pouvez gagner -5 points supplémentaires.
fjfau
pourrait être interprété comme 럶ㅕ
ou 럴며
. Comment résolvons-nous cela?
tprP
dans le cas de test 5: cela se transforme en ㅅㅔㄱㅖ
, où ㅅ
est un chose choisie, ㅔ
est une jungseong et ㄱ
est une jongseong. Donc, cela ne devrait-il pas se transformer en 섷ㅖ
(groupé comme (ㅅㅔㄱ)(ㅖ)
) au lieu de 세계
(groupé comme (ㅅㅔ)(ㄱㅖ)
)? Dans un commentaire précédent, vous déclarez qu'il s'agit d'interpréter en tapant, donc je m'attendrais ㅅㅔㄱ
à le transformer en 섷
. Ou le coréen tape-t-il de droite à gauche au lieu de gauche à droite?
l
aprèsml
pour le symbole coréenㅣ
.