O objetivo
Dada uma sequência de sílabas Hangul, classifique os caracteres na ordem do dicionário norte-coreano.
Introdução às sílabas Hangul
Hangul (한글) é o sistema de escrita coreano inventado por Sejong, o Grande. As sílabas de Hangul são alocadas no ponto Unicode U + AC00 - U + D7A3. Uma sílaba Hangul consiste em uma consoante inicial, uma vogal e uma consoante final opcional.
As consoantes iniciais são:
ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
As vogais são:
ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
As consoantes finais são:
(none) ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
Por exemplo, 뷁
tem consoante inicial ㅂ
, vogal ㅞ
e consoante final ㄺ
.
Ordem de dicionário da Coréia do Sul
As consoantes e vogais acima são classificadas na ordem do dicionário sul-coreano. As sílabas são primeiramente classificadas por consoantes iniciais, segundo por vogais e, finalmente, por consoantes finais (opcionais).
O bloco Unicode para sílabas Hangul contém todas as combinações consoante / vogal e é inteiramente classificado na ordem do dicionário sul-coreano.
O bloco Unicode pode ser visto aqui, e os primeiros 256 caracteres são mostrados para fins ilustrativos:
가각 갂 갃간 갅갆 갇갈 갓갔 강갖 갗갘 같갚 객갞 갟갠 갡갢 갣갤 갥갦 갧갨 갩갪 갫갬 갭갮 갯갰 갱갲 갵갶 갵갶 갷갸 갹갺 갻갼 갽갾 걁걂 걁걂 걁걂 걅걆 걝걞 걁걂 걗걘 걙걚 걝걞 걗걘 걗걘 걗걘 걝걞 걗걘 걗걘 걗걘 걗걘 걗걘 걣걤 걥걦 걧걨 걩걪 걫걬 걷걸 걹걺 걻걼 걽걾 겁겂 것 겄겅 겆겇 겈겉 겊겋 게겍 겎겏 겐겑 겒겓 겔겕 겘겙 겘겙 겚겛 겜겝 겞겟 겠겡 겤겥 겤겥 겤겥 겤겥 겤겥 겦겧 겪겫 결겱 겤겥 겦겧 겼경 곀곁 겺겻 겺겻 겼경 곀곁 겺겻 계곅 곆곇 곈곉 곊곋 곌곍 곐곑 곒곓 곔곕 곘곙 곚곛 곜곝 고곡 곢곣 곤곥 곦곧 골곩 곪곫 곬곭 곮곯 곰곱 곲곳 곴공 곶곷 곰곱 곲곳 곴공 곶곷 곰곱 곲곳 곲곳 곾곿 곰곱 곾곿
Por exemplo, a seguinte frase (sem espaços e pontuações):
키스의고유조건은입술끼리만나야하고특별한기술은필요치않다
está classificado para:
건고고기끼나다리만별술술스않야요유은은의입조치키특필하한
No C ++, se a string estiver inserida std::wstring
, a classificação acima será simples std::sort
.
Ordem do dicionário norte-coreano
O dicionário norte-coreano tem uma ordem consoante / vogal diferente.
As consoantes iniciais são classificadas como:
ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㄸ ㅃ ㅆ ㅉ ㅇ
As vogais são classificadas como:
ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ ㅐ ㅒ ㅔ ㅖ ㅚ ㅟ ㅢ ㅘ ㅝ ㅙ ㅞ
As consoantes finais são classificadas como:
(none) ㄱ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ
Como o sul, as sílabas são primeiramente classificadas por consoantes iniciais, segundo por vogais e, finalmente, por consoantes finais (opcionais).
Se a frase acima for dada, a saída deve ser:
건고고기나다리만별술술스조치키특필하한끼않야요유은은입의
Regras
Se a entrada contiver um caractere que não esteja em U + AC00 - U + D7A3, ela se encaixa na situação de não se importar .
Como este é um código-golfe, o código mais curto em bytes vence.
가까나다따라마바빠사싸아자짜차카타파
(todas as consoantes iniciais),가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기
(todas as vogais),가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛
(todas as consoantes finais).Respostas:
05AB1E ,
474538 bytesExperimente online!
fonte
JavaScript (ES6),
150 148137bytesGuardado 10 bytes graças a @Grimy
E / S: matrizes de caracteres.
Experimente online!
Divisão de sílabas Hangul
Comentado
fonte
Carvão , 80 bytes
Experimente online! Link é a versão detalhada do código. Explicação: Funciona gerando todas as sílabas 11172 Hangul na ordem do dicionário norte-coreano e verificando quais estão presentes na entrada (para que todos os outros caracteres sejam excluídos; também um pouco lento: leva 18 segundos no TIO). Explicação:
Loop sobre a seqüência de caracteres compactada
acdfghjmopqrsbeiknl
. Isso representa a lista de consoantes iniciais da Coréia do Sul (numeradas usando o alfabeto minúsculo ocidental) na ordem do dicionário da Coréia do Norte.Loop sobre a sequência compactada
02468cdhik1357bgj9eaf
. Isso representa a lista de vogais sul-coreanas (numeradas usando dígitos ASCII e alfabeto minúsculo) na ordem do dicionário norte-coreano.Loop sobre a sequência compactada
013456789abcdefghijlmnopqr2k
. Isso representa a lista de consoantes finais sul-coreanas (usando a mesma numeração que as vogais) na ordem do dicionário norte-coreano.Concatene a vogal e a consoante final e decodifique como um número 28 base, depois adicione 588 vezes a vogal inicial e 0xAC00. Imprima todos os caracteres da entrada que tenham isso como ordinal.
fonte
\xFF
na página de códigos do carvão vegetal.