L'objectif
Étant donné une chaîne de syllabes Hangul, triez les caractères dans l'ordre du dictionnaire nord-coréen.
Introduction aux syllabes Hangul
Hangul (한글) est le système d'écriture coréen inventé par Sejong le Grand. Les syllabes Hangul sont attribuées au point Unicode U + AC00 - U + D7A3. Une syllabe Hangul se compose d'une consonne initiale, d'une voyelle et d'une consonne finale facultative.
Les consonnes initiales sont:
ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
Les voyelles sont:
ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
Les consonnes finales sont:
(none) ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
Par exemple, 뷁
a une consonne initiale ㅂ
, une voyelle ㅞ
et une consonne finaleㄺ
.
Ordre du dictionnaire sud-coréen
Les consonnes et les voyelles ci-dessus sont triées dans l'ordre du dictionnaire sud-coréen. Les syllabes sont d'abord triées par consonnes initiales, ensuite par voyelles, et enfin par consonnes finales (facultatives).
Le bloc Unicode pour les syllabes Hangul contient toutes les combinaisons consonne / voyelle et est entièrement trié dans l'ordre du dictionnaire sud-coréen.
Le bloc Unicode peut être vu ici, et les 256 premiers caractères sont affichés à des fins d'illustration:
가각 갂 갃간 갅갆 갇갈 갉갊 갋갌 갍갎 갏감 갑값 갓갔 강갖 갗갘 같갚 갛개 객갞 갟갠 갡갢 갣갤 갥갦 갧갨 갩갪 갫갬 갭갮 갯갰 갱갲 갳갴 갵갶 갷갸 갹갺 갻갼 갽갾 갿걀 걁걂 걃걄 걅걆 걇걈 걉걊 걋걌 걍걎 걏걐 걑걒 걓걔 걕걖 걗걘 걙걚 걛걜 걝걞 걑걒 걣걤 걥걦 걧걨 걩걪 걫걬 걭걮 걯거 걱걲 걳건 걵걶 걷걸 걹걺 걻걼 걽걾 걿검 겁겂 것 겄겅 겆겇 겈겉 겊겋 게겍 겎겏 겐겑 겒겓 겔겕 겖겗 겘겙 겚겛 겜겝 겞겟 겠겡 겢겣 겤겥 겦겧 겨격 겪겫 견겭 겮겯 결겱 겲겳 겴겵 겶겷 겸겹 겺겻 겼경 겾겿 곀곁 곂곃 계곅 곆곇 곈곉 곊곋 곌곍 곎곏 곐곑 곒곓 곔곕 곖곗 곘곙 곚곛 곜곝 곞곟 고곡 곢곣 곤곥 곦곧 골곩 곪곫 곬곭 곮곯 곰곱 곲곳 곴공 곶곷 곸곹 곺곻 과 곽 곾곿
Par exemple, la phrase suivante (sans espaces ni ponctuations):
키스의고유조건은입술끼리만나야하고특별한기술은필요치않다
est trié en:
건고고기끼나다리만별술술스않야요유은은의입조치키특필하한
En C ++, si la chaîne est dedans std::wstring
, le tri ci-dessus est simplestd::sort
.
Ordre du dictionnaire nord-coréen
Le dictionnaire nord-coréen a un ordre de consonne / voyelle différent.
Les consonnes initiales sont triées comme:
ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㄸ ㅃ ㅆ ㅉ ㅇ
Les voyelles sont triées comme:
ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ ㅐ ㅒ ㅔ ㅖ ㅚ ㅟ ㅢ ㅘ ㅝ ㅙ ㅞ
Les consonnes finales sont triées comme:
(none) ㄱ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ
Comme South, les syllabes sont d'abord triées par consonnes initiales, ensuite par voyelles, et enfin par consonnes finales (facultatives).
Si la phrase ci-dessus est donnée, la sortie doit être:
건고고기나다리만별술술스조치키특필하한끼않야요유은은입의
Règles
Si l'entrée contient un caractère pas dans U + AC00 - U + D7A3, il tombe en ne se soucient pas la situation.
Comme il s'agit d'un code-golf, le code le plus court en octets l'emporte.
가까나다따라마바빠사싸아자짜차카타파
(toutes les consonnes initiales),가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기
(toutes les voyelles),가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛
(toutes les consonnes finales).Réponses:
05AB1E ,
474538 octetsEssayez-le en ligne!
la source
JavaScript (ES6),
150 148137 octets10 octets enregistrés grâce à @Grimy
E / S: tableaux de caractères.
Essayez-le en ligne!
Diviser les syllabes Hangul
Commenté
la source
Fusain , 80 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication: Fonctionne en générant toutes les syllabes Hangul 11172 dans l'ordre du dictionnaire nord-coréen et en vérifiant celles qui sont présentes dans l'entrée (afin que tous les autres caractères soient supprimés; également un peu lent: prend 18 secondes sur TIO). Explication:
Boucle sur la chaîne compressée
acdfghjmopqrsbeiknl
. Cela représente la liste des consonnes initiales sud-coréennes (numérotées en utilisant l'alphabet occidental en minuscules) dans l'ordre du dictionnaire nord-coréen.Boucle sur la chaîne compressée
02468cdhik1357bgj9eaf
. Cela représente la liste des voyelles sud-coréennes (numérotées à l'aide de chiffres ASCII et de l'alphabet minuscule) dans l'ordre du dictionnaire nord-coréen.Boucle sur la chaîne compressée
013456789abcdefghijlmnopqr2k
. Cela représente la liste des consonnes finales sud-coréennes (en utilisant la même numérotation que les voyelles) dans l'ordre du dictionnaire nord-coréen.Concaténer la voyelle et la consonne finale et décoder comme un nombre de base 28, puis ajouter 588 fois la voyelle initiale et 0xAC00. Imprimez tous les caractères de l'entrée qui ont cela comme ordinal.
la source
\xFF
en octets dans la page de codes de Charcoal.