Einführung
Es ist ein bisschen wie das DVORAK-Tastaturlayout , aber VIEL schwerer.
Lassen Sie uns zuerst über die koreanische Tastatur sprechen. Wie Sie in Wikipedia sehen können , gibt es einen Kor / Eng-Schlüssel, mit dem Sie zwischen koreanischen und englischen Schlüsselsätzen wechseln können.
Koreaner tippen manchmal falsch: Sie versuchen, auf einer QWERTY-Tastatur auf Koreanisch oder auf einer Tastatur mit zwei Sätzen auf Englisch zu schreiben.
Also, hier ist das Problem: Wenn Sie koreanische Zeichen in einer Tastatur mit zwei Tastensätzen eingegeben haben, konvertieren Sie diese in alphabetische Zeichen, die in einer QWERTY-Tastatur eingegeben wurden. Wenn Sie in qwerty eingegebene alphabetische Zeichen haben, ändern Sie diese in eine Tastatur mit zwei Sätzen.
Tastatur mit zwei Sätzen
Hier ist das Tastaturlayout mit zwei Sätzen:
ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ
ㅁㄴㅇㄹㅎㅗㅓㅏㅣ
ㅋㅌㅊㅍㅠㅜㅡ
und mit Shift-Taste:
ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ
Nur die oberste Reihe ändert sich, die anderen nicht.
Über koreanische Schriftzeichen
wenn es hier endete, könnte es einfach sein, aber nein. Wenn Sie tippen
dkssud, tprP!
Die Ausgabe wird nicht wie folgt angezeigt:
ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ!
aber so:
안녕, 세계!(means Hello, World!)
und es macht die Dinge viel schwieriger.
Koreanische Zeichen teilen sich in drei Teile: 'Choseong (Konsonant)', 'Jungseong (Vokal)' und 'Jongseong (Konsonant am Ende der Silbe: kann leer sein)', und Sie müssen es trennen.
Glücklicherweise gibt es dafür einen Weg.
Wie trenne ich mich?
Es gibt 19 Choseong, 21 Jungseong und 28 Jongseong (mit Leerzeichen) und 0xAC00 ist '가', das erste Zeichen der koreanischen Zeichen. Auf diese Weise können wir koreanische Zeichen in drei Teile unterteilen. Hier ist die Reihenfolge von jedem und seiner Position in Tastatur mit zwei Sätzen.
wähle eine Reihenfolge:
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
r R s e E f a q Q t T d w W c z x v g
jungseong Bestellung:
ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
k o i O j p u P h hk ho hl y n nj np nl b m ml l
jongseong Bestellung:
()ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
()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
Lassen Sie uns sagen (unicode value of some character) - 0xAC00
ist Korean_code
, und der Index von Choseong, Jungseong, Jongseong ist Cho
, Jung
, Jong
.
Dann Korean_code
ist(Cho * 21 * 28) + Jung * 28 + Jong
Hier ist der JavaScript - Code , die koreanischen Zeichen trennen von dieser koreanischen Website, für Ihre Bequemlichkeit.
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]);
Im zusammengebauten Zustand
- Beachten Sie, dass
ㅘ
,ㅙ
,ㅚ
,ㅝ
,ㅞ
,ㅟ
,ㅢ
ist eine Kombination aus anderen jungseongs.
ㅗ+ㅏ=ㅘ, ㅗ+ㅐ=ㅙ, ㅗ+ㅣ=ㅚ, ㅜ+ㅓ=ㅝ, ㅜ+ㅔ=ㅞ, ㅜ+ㅣ=ㅟ, ㅡ+ㅣ=ㅢ
- Choseong ist notwendig. Das heißt, wenn
frk
gegeben ist, was istㄹㄱㅏ
, kann es sich auf zwei Arten ändern:ㄺㅏ
undㄹ가
. Dann müssen Sie es in einen Weg umwandeln, der Choseong hat. Wennjjjrjr
gegeben,ㅓㅓㅓㄱㅓㄱ
haben führendeㅓ
s nichts, was gewählt werden kann, aber das vierteㅓ
hatㄱ
, was gewählt werden kann, also wird es in geändertㅓㅓㅓ걱
.
Ein weiteres Beispiel: 세계
( tprP
). Es kann in 섹ㅖ
( (ㅅㅔㄱ)(ㅖ)
) geändert werden , aber da Choseong erforderlich ist, wird es in 세계
( (ㅅㅔ)(ㄱㅖ)
) geändert.
Beispiele
Eingang 1
안녕하세요
Ausgang 1
dkssudgktpdy
Eingang 2
input 2
Ausgang 2
ㅑㅞㅕㅅ 2
eingang 3
힘ㄴㄴ
Ausgang 3
glass
eingang 4
아희(Aheui) is esolang which you can program with pure Korean characters.
Ausgang 4
dkgml(모뎌ㅑ) ㅑㄴ ㄷ내ㅣ뭏 조ㅑ초 ㅛㅐㅕ ㅊ무 ㅔ갷ㄱ므 쟈소 ㅔㅕㄱㄷ ㅏㅐㄱㄷ무 촘ㄱㅁㅊㅅㄷㄱㄴ.
eingang 5
dkssud, tprP!
Ausgang 5
안녕, 세계!
eingang 6
ㅗ디ㅣㅐ, 째깅! Hello, World!
Ausgang 6
hello, World! ㅗ디ㅣㅐ, 째깅!
Kürzester Code gewinnt. (in Bytes)
Neue Regel für Sie Bequemlichkeit
Sie können Zeichen A
, die nicht das Gegenstück zu einer Tastatur mit zwei Sätzen haben, verwerfen . so Aheui
zu Aㅗ뎌ㅑ
ist OK. Aber, wenn Sie ändern Aheui
zu 모뎌ㅑ
können Sie erhalten -5 Punkt, so dass Sie 5 Byte verdienen.
Sie können zwei jungseongs trennen (wie ㅘ
zu ㅗ+ㅏ
). wie rhk
auf 고ㅏ
oder how
zu ㅗㅐㅈ
. Aber wenn man es kombinieren (wie rhk
auf 과
oder how
zu ㅙㅈ
), können Sie zusätzliche -5 Punkte.
fjfau
könnte als 럶ㅕ
oder interpretiert werden 럴며
. Wie lösen wir das?
tprP
im Testfall 5: Dies wandelt sich in ㅅㅔㄱㅖ
, wo ㅅ
ein Choseong ist, ㅔ
ist ein Jungseong und ㄱ
ist ein Jongseong. So should't verwandeln diese in 섷ㅖ
(gruppiert wie (ㅅㅔㄱ)(ㅖ)
) statt 세계
(gruppiert wie (ㅅㅔ)(ㄱㅖ)
)? In einem früheren Kommentar geben Sie an, dass es durch Tippen interpretiert wird, also würde ich erwarten ㅅㅔㄱ
, dass es sich in verwandelt 섷
. Oder tippt Koreanisch von rechts nach links statt von links nach rechts?
l
danachml
für das koreanische Symbol zu fehlenㅣ
.