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) - 0xAC00est Korean_code, et l' indice de TCH'ÔSONG, djoungsong, Jongseong est Cho, Jung, Jong.
Alors, Korean_codeest(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
frkest 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 sontjjjrjrdonné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 Aqui 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.
fjfaupourrait être interprété comme 럶ㅕou 럴며. Comment résolvons-nous cela?
tprPdans 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?
laprèsmlpour le symbole coréenㅣ.