Urutan alfabet Spanyol Kuno

22

Sebelum 1994, kamus Spanyol menggunakan urutan abjad dengan kekhasan : digraf lldan chdianggap seolah-olah mereka adalah huruf tunggal. chsegera diikuti c, dan llsegera diikuti l. Menambahkan surat ñ, yang mengikuti ndalam bahasa Spanyol, urutannya adalah:

a, b, c, ch, d, e, f, g, h, i, j, k, l, ll, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z

Sejak tahun 1994 lldan chdianggap sebagai kelompok dua huruf ( l, ldan c, hmasing-masing), dan dengan demikian urutan abjad sama dengan dalam bahasa Inggris, dengan pengecualian huruf ñ.

Orde lama jelas lebih menarik .

Tantangan

Masukkan daftar kata-kata nol atau lebih dan output daftar diurutkan sesuai dengan urutan abjad Spanyol. Penyortiran adalah antara kata-kata (bukan antara huruf dalam suatu kata). Artinya, kata-kata adalah atomik, dan hasilnya akan berisi kata-kata yang sama dalam urutan yang mungkin berbeda.

Untuk mempermudah, kami tidak akan mempertimbangkan surat ñ, atau vokal beraksen á, é, í, ó, ú, atau huruf besar huruf. Setiap kata akan menjadi urutan satu atau lebih karakter yang diambil dari rentang inklusif dari ASCII 97 ( a) hingga ASCII 122 ( z).

Jika ada lebih dari dua lhuruf berturut-turut, mereka harus dikelompokkan dari kiri ke kanan. Artinya, llladalah lldan kemudian l(tidak ldan kemudian ll).

Format input dapat berupa: kata-kata yang dipisahkan oleh spasi, oleh baris baru, atau karakter yang sesuai. Kata-kata dapat dikelilingi oleh tanda kutip atau tidak, sesuai pilihan Anda. Daftar atau susunan kata juga dapat diterima. Setiap format yang masuk akal adalah valid; sebutkan saja dalam jawaban Anda.

Dengan cara yang sama, output akan berupa format yang masuk akal (tidak harus sama dengan input).

Golf kode, kemenangan tersingkat.

Uji kasus

Dalam contoh berikut kata-kata dipisahkan oleh spasi. Baris pertama adalah input, kedua adalah output:

llama coche luego cocina caldo callar calma
caldo calma callar cocina coche luego llama

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

"Kata-kata" juga dapat berupa huruf tunggal:

b c a ch ll m l n
a b c ch l ll m n

atau kombinasi yang tidak mungkin (ingat aturan yang ldikelompokkan kiri ke kanan):

lll llc llz llll lllz
llc lll lllz llll llz

Input kosong harus memberikan output kosong:



Tentu saja, pesanan ini dapat diterapkan ke bahasa lain juga:

chiaro diventare cucchiaio
cucchiaio chiaro diventare

all alternative almond at ally a amber
a almond alternative all ally amber at
Luis Mendo
sumber
5
Sudah terlambat untuk memperbaiki pertanyaan sekarang, karena ia memiliki jawaban, tetapi sebenarnya rr adalah satu huruf juga. Saya percaya itu kehilangan statusnya sebagai satu huruf lebih lambat dari ll dan ch, jadi penjelasan di Wikipedia tidak salah sebanyak parsial.
Peter Taylor
"tweo"? filler +
CalculatorFeline
3
@PeterTaylor Akademi resmi (RAE) tidak mempertimbangkan rrsatu surat pun ; setidaknya tidak sejak 1803. Tapi memang benar bahwa itu dianggap sebagai satu huruf di Amerika
Luis Mendo
1
Sepertinya orang Hongaria layak mendapat tantangan terpisah, jauh lebih sulit :-)
Luis Mendo
1
Alfabet Wales memiliki banyak dari mereka, dan mungkin menarik karena mereka tidak dalam urutan abjad (Inggris), atau termasuk semua karakter latin: a, b, c, ch, d, dd, e, f, ff, g, ng, h, i, j, l, ll, m, n, o, p, ph, r, rh, s, t, th, u, w, y
Algy Taylor

Jawaban:

7

Pyth, 14 13 byte

Pembaruan: melihat ini diterima dan memperhatikan golf 1 byte yang sepele. Aduh.

:D"ll|ch|."1Q

Cobalah online. Suite uji.

Untuk setiap kata, temukan semua kecocokan yang tidak tumpang tindih untuk regex ll|ch|.. Ini membagi kata menjadi "huruf". Kemudian, cukup urutkan kata berdasarkan daftar yang dibagi.

PurkkaKoodari
sumber
Pendekatan hebat! (Sekarang saya akhirnya memahaminya) :-)
Luis Mendo
Kode itu benar-benar menarik:D
Erik the Outgolfer
3

PowerShell, 46 44 51 50 byte

$args|sort @{e={$_-replace'(?=ch|ll)(.).','$1Α'}}

The Αkarakter huruf alpha Yunani yang pada datang setelah semua huruf Latin dalam rangka bawaan semacam PowerShell (setidaknya di komputer saya, saya tidak yakin apakah itu berbeda lokal lain). Itu dihitung sebagai 2 byte dalam pengkodean UTF8.

Contoh penggunaan, dengan asumsi string ini disimpan dalam file bernama es-sort.ps1:

> es-sort.ps1 'lzego' 'luego' 'llama'

luego
lzego
llama
pswg
sumber
2

Mathematica, 81 byte

StringReplace[Sort@StringReplace[#,"ch"->"cZ","ll"->"lZ"],"cZ"->"ch","lZ"->"ll"]&

Pendekatan yang sama dengan jawaban TimmyD.

CalculatorFeline
sumber
1

Python 2, 128 116 byte

lambda p:map(''.join,sorted([{'!':'ll','?':'ch'}.get(c,c)for c in w.replace('ll','!').replace('ch','?')]for w in p))

Saya masih merasa pasti ada ruang untuk perbaikan di sini.

Orez
sumber
1

Javascript, 95 byte

s=>s.map(a=>a.replace(/ll|ch/g,m=>m[0]+'~')).sort().map(a=>a.replace(/.~/g,m=>m>'d'?'ll':'ch'))
Charlie Wynn
sumber
1

Perl, 40 byte

Termasuk +1 untuk -p

Jalankan dengan daftar kata-kata di STDIN:

perl -p spanisort.pl <<< "llama coche luego cocina caldo callar calma"

spanisort.pl

s/ll|ch|./\u$&/g;$_="\L@{[sort split]}"
Ton Hospel
sumber