Objektif
Diberikan string suku kata Hangul, urutkan karakter dalam urutan kamus Korea Utara.
Pengantar suku kata Hangul
Hangul (한글) adalah sistem penulisan Korea yang diciptakan oleh Sejong the Great. Suku kata Hangul dialokasikan dalam titik Unicode U + AC00 - U + D7A3. Suku kata Hangul terdiri dari konsonan awal, vokal, dan konsonan akhir opsional.
Konsonan awal adalah:
ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
Vokal adalah:
ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
Konsonan terakhir adalah:
(none) ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
Misalnya, 뷁
memiliki konsonan awal ㅂ
, vokal ㅞ
, dan konsonan akhir ㄺ
.
Urutan kamus Korea Selatan
Konsonan dan vokal di atas diurutkan dalam urutan kamus Korea Selatan. Suku kata pertama diurutkan berdasarkan konsonan awal, kedua oleh vokal, dan akhirnya oleh konsonan akhir (opsional).
Blok Unicode untuk suku kata Hangul berisi setiap kombinasi konsonan / vokal, dan seluruhnya diurutkan dalam urutan kamus Korea Selatan.
Blok Unicode dapat dilihat di sini, dan 256 karakter pertama ditampilkan untuk tujuan ilustrasi:
가각 갂 갃간 갅갆 갇갈 갋갌 갋갌 갍갎 갏감 갑값 갓갔 강갖 갗갘 같갚 갛개 객갞 객갞 갡갢 갣갤 갩갪 갩갪 갫갬 갫갬 갫갬 갯갰 갱갲 갱갲 갱갲 갹갺 갿걀 갿걀 갿걀 걁걂 걍걎 걍걎 걍걎 걏걐 걡걢 걛걜 걛걜 걛걜 걛걜 걛걜 걛걜 걛걜 걛걜 걛걜 걛걜 걕걖 걕걖 걛걜 걛걜 걕걖 걕걖 걣걤 걥걦 걧걨 걩걪 걫걬 걭걮 걯거 걱걲 걳건 걵걶 걷걸 걹걺 걻걼 걽걾 걿검 겁겂 겁겂 겄겅 겆겇 게겍 게겍 게겍 겎겏 겎겏 겒겓 겔겕 겔겕 겔겕 겔겕 겢겣 겢겣 겢겣 겤겥 겦겧 결겱 결겱 결겱 겶겷 겾겿 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 겼경 계곅 곆곇 곈곉 곊곋 곌곍 곎곏 곐곑 곒곓 곒곓 곔곕 곖곗 곘곙 곚곛 곞곟 고곡 고곡 곢곣 곢곣 곤곥 골곩 골곩 곮곯 곮곯 곮곯 곰곱 곰곱 곲곳 곴공 곴공 곶곷 곶곷 곶곷 과 과 곽 곾곿 곾곿
Misalnya, kalimat berikut (tanpa spasi dan tanda baca):
키스의고유조건은입술끼리만나야하고특별한기술은필요치않다
diurutkan ke:
건고고기끼나다리만별술술스않야요유은은의입조치키특필하한
Dalam C ++, jika string dalam std::wstring
, penyortiran atas adalah polos std::sort
.
Urutan kamus Korea Utara
Kamus Korea Utara memiliki urutan konsonan / vokal yang berbeda.
Konsonan awal diurutkan seperti:
ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㄸ ㅃ ㅆ ㅉ ㅇ
Vokal diurutkan seperti:
ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ ㅐ ㅒ ㅔ ㅖ ㅚ ㅟ ㅢ ㅘ ㅝ ㅙ ㅞ
Konsonan akhir diurutkan seperti:
(none) ㄱ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ
Seperti Selatan, suku kata diurutkan berdasarkan konsonan awal, kedua oleh vokal, dan akhirnya oleh konsonan akhir (opsional).
Jika kalimat di atas diberikan, hasilnya harus:
건고고기나다리만별술술스조치키특필하한끼않야요유은은입의
Aturan
Jika input berisi karakter yang tidak dalam U + AC00 - U + D7A3, itu jatuh dalam situasi tidak peduli .
Karena ini adalah kode-golf, kode terpendek dalam byte akan menang.
가까나다따라마바빠사싸아자짜차카타파
(semua konsonan awal),가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기
(semua vokal),가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛
(semua konsonan tertinggal).Jawaban:
05AB1E ,
474538 byteCobalah online!
sumber
JavaScript (ES6),
150 148137 byteDisimpan 10 byte berkat @Grimy
I / O: array karakter.
Cobalah online!
Memisahkan suku kata Hangul
Berkomentar
sumber
Arang , 80 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan: Bekerja dengan menghasilkan semua 11172 suku kata Hangul dalam urutan kamus Korea Utara dan memeriksa untuk melihat mana yang ada dalam input (sehingga semua karakter lain dihapus; juga agak lambat: membutuhkan 18 detik pada TIO). Penjelasan:
Lingkarkan di atas string yang dikompresi
acdfghjmopqrsbeiknl
. Ini mewakili daftar konsonan awal Korea Selatan (diberi nomor menggunakan huruf kecil Barat) dalam urutan kamus Korea Utara.Lingkarkan di atas string yang dikompresi
02468cdhik1357bgj9eaf
. Ini mewakili daftar vokal Korea Selatan (diberi nomor menggunakan angka ASCII dan huruf kecil) dalam urutan kamus Korea Utara.Lingkarkan di atas string yang dikompresi
013456789abcdefghijlmnopqr2k
. Ini mewakili daftar konsonan akhir Korea Selatan (menggunakan penomoran yang sama dengan vokal) dalam urutan kamus Korea Utara.Gabungkan vokal dan konsonan terakhir dan decode sebagai angka dasar 28, kemudian tambahkan 588 kali vokal awal dan 0xAC00. Cetak semua karakter dari input yang memilikinya sebagai urutan.
sumber
\xFF
di halaman kode Charcoal.