Eski İspanyol alfabetik sıraya göre


22

1994'ten önce, İspanyolca sözlükler özel bir alfabetik sıra kullandılar : digraphs llve chtek harfmiş gibi kabul edildiler. chhemen izledi cve llhemen izledi l. İspanyolcada ñtakip eden mektubu ekleyerek, nsipariş şu oldu:

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

1994 yılından bu yana llve chiki harf (gruplar olarak kabul edilmektedir l, lve c, hsırasıyla) ve böylece alfabetik harfi hariç olmak üzere, İngilizce olarak aynıdır ñ.

Eski sipariş kesinlikle daha ilginçti .

Meydan okuma

Sıfır ya da daha fazla sözcük listesi girin ve eski İspanyol alfabetik sırasına göre sıralanmış listeyi çıktı alın. Sıralama kelimeler arasındadır (bir kelimenin içindeki harfler arasında değil). Başka bir deyişle, kelimeler atomiktir ve çıktı aynı kelimeleri muhtemelen farklı bir sıraya göre içerecektir.

Kolaylık olması açısından, mektup değerlendirmez ñveya aksanlı ünlüler á, é, í, ó, ú, veya harf büyük harf. Her bir kelime, ASCII 97 ( a) ila ASCII 122 ( z) arasında dahil edilen aralıktan alınan bir veya daha fazla karakterden oluşan bir sekans olacaktır .

lBir satırda ikiden fazla harf varsa , bunlar soldan sağa gruplandırılmalıdır. Yani, lllbir llve daha sonra l(değil lve sonra ll).

Giriş formatı şunlar olabilir: boşluklarla, yeni satırlarla veya herhangi bir uygun karakterle ayrılmış kelimeler. Kelimeler seçtiğinizde tırnak işaretleri içinde olabilir veya olmayabilir. Bir liste veya bir kelime dizisi de kabul edilebilir. Herhangi bir makul format geçerlidir; Sadece cevabını söyle.

Benzer şekilde, çıktı herhangi bir makul formatta olacaktır (girdi ile aynı olması gerekmez).

Kod golf, en kısa sürede kazanır.

Test durumları

Aşağıdaki örneklerde kelimeler boşluklarla ayrılmıştır. İlk satır giriş, ikinci çıkış:

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

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

"Kelimeler" de tek harf olabilir:

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

veya olası olmayan kombinasyonlar ( lsoldan sağa gruplanan kuralı unutmayın ):

lll llc llz llll lllz
llc lll lllz llll llz

Boş bir giriş boş bir çıktı vermelidir:



Tabii ki, bu sipariş diğer dillere de uygulanabilir:

chiaro diventare cucchiaio
cucchiaio chiaro diventare

all alternative almond at ally a amber
a almond alternative all ally amber at

5
Soruyu şimdi düzeltmek için çok geç, çünkü bir cevabı var, ama aslında rr da tek bir harfdi. Durumunu ll ve ch'den sonra tek harf olarak kaybettiğine inanıyorum, bu yüzden Wikipedia'daki açıklama kısmi olarak yanlış değil.
Peter Taylor

"tweo"? filler +
CalculatorFeline

3
@PeterTaylor Resmi akademi (RAE) tek bir harf düşünmedirr ; en azından 1803'ten bu yana değil. Fakat Amerika’da tek bir mektup olarak kabul
Luis Mendo

1
Macarca ayrı ve çok daha zor bir mücadeleyi hak ediyor gibi gözüküyor :-)
Luis Mendo

1
Gal alfabesi bunlardan bir sürü içeriyor ve muhtemelen (İngilizce) alfabetik sıraya girmediklerinden veya tüm latin karakterlerini içerdiklerinden ilginçtir: a, b, c, ch, d, dd, e, f, ff, g, h, i, j, l, ll, m, n, o, p, ph, r, rh, s, t, th, u, w, y
Algy Taylor

Yanıtlar:


7

Pyth, 14 13 bayt

Güncelleme: Bunun kabul edildiğini ve önemsiz bir 1 bayt golf fark ettiğini gördü. Whoops.

:D"ll|ch|."1Q

Çevrimiçi deneyin. Test odası.

Her bir kelime için, regex için örtüşmeyen tüm eşleşmeleri bulun ll|ch|.. Bu, kelimeyi "harflere" böler. Ardından, kelimeleri bölünmüş listelerine göre sıralayın.


Harika yaklaşım! (Şimdi nihayet anladım) :-)
Luis Mendo

Bu kod kesinlikle etkileyici:D
Outgolfer Erik

3

PowerShell, 46 44 51 50 bayt

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

ΑKarakteri (diğer yerel ayarlarda farklı olmadığını benim makinede en azından emin değilim) 'de PowerShell varsayılan sıralama düzeninde tüm Latin harfleriyle sonra gelen Yunan harfi alfa olduğunu. UTF8 kodlamasında 2 bayt olarak sayılır.

Örnek kullanım, bu dizginin adında bir dosyaya kaydedildiğini varsayarsak es-sort.ps1:

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

luego
lzego
llama

2

Mathematica, 81 bayt

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

TimmyD'nin cevabıyla aynı yaklaşım.


1

Python 2, 128 116 bayt

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

Hala iyileştirme için yer varmış gibi hissediyorum.


1

Javascript, 95 bayt

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

1

Perl, 40 bayt

İçin +1 içerir -p

STDIN'deki kelimelerin listesini çalıştırın:

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

spanisort.pl

s/ll|ch|./\u$&/g;$_="\L@{[sort split]}"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.