Alte spanische alphabetische Reihenfolge

22

Vor 1994 verwendeten spanische Wörterbücher alphabetische Reihenfolge mit einer Besonderheit : Digraphen llund chwurden als einzelne Buchstaben betrachtet. chsofort gefolgt cund llsofort gefolgt l. Das Hinzufügen der Buchstaben ñ, die folgt , nin Spanisch, war der Befehl dann:

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

Seit 1994 llund chsind als Gruppen von zwei Buchstaben betrachtet ( l, lund c, hrespectively) und damit alphabetischer Reihenfolge ist das gleiche wie in Englisch, mit Ausnahme des Briefes ñ.

Die alte Ordnung war definitiv interessanter .

Die Herausforderung

Geben Sie eine Liste mit null oder mehr Wörtern ein und geben Sie die Liste sortiert nach der alten spanischen alphabetischen Reihenfolge aus. Die Sortierung erfolgt zwischen Wörtern (nicht zwischen Buchstaben innerhalb eines Wortes). Das heißt, Wörter sind atomar und die Ausgabe enthält dieselben Wörter in einer möglicherweise anderen Reihenfolge.

Zur Vereinfachung werden wir nicht als Brief ñoder akzentuierte Vokale á, é, í, ó, ú, oder Großbuchstaben. Jedes Wort ist eine Folge von einem oder mehreren Zeichen aus dem Bereich von ASCII 97 ( a) bis ASCII 122 ( z).

Wenn es mehr als zwei lBuchstaben in einer Reihe gibt, sollten sie von links nach rechts gruppiert werden. Das heißt, lllist llund dann l(nicht lund dann ll).

Das Eingabeformat kann Folgendes sein: Wörter, die durch Leerzeichen, Zeilenumbrüche oder ein beliebiges geeignetes Zeichen getrennt sind. Wörter können nach Ihrer Wahl in Anführungszeichen gesetzt werden. Eine Liste oder ein Array von Wörtern ist ebenfalls zulässig. Jedes vernünftige Format ist gültig; Geben Sie es einfach in Ihrer Antwort an.

In ähnlicher Weise hat die Ausgabe ein beliebiges vernünftiges Format (nicht unbedingt dasselbe wie die Eingabe).

Codegolf, kürzeste Gewinne.

Testfälle

In den folgenden Beispielen werden Wörter durch Leerzeichen getrennt. Die erste Zeile wird eingegeben, die zweite Zeile wird ausgegeben:

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

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

"Wörter" können auch einzelne Buchstaben sein:

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

oder unwahrscheinliche Kombinationen (erinnern Sie sich an die Regel, ldie von links nach rechts gruppiert ist):

lll llc llz llll lllz
llc lll lllz llll llz

Eine leere Eingabe sollte eine leere Ausgabe ergeben:



Natürlich kann diese Reihenfolge auch auf andere Sprachen angewendet werden:

chiaro diventare cucchiaio
cucchiaio chiaro diventare

all alternative almond at ally a amber
a almond alternative all ally amber at
Luis Mendo
quelle
5
Es ist zu spät, um die Frage jetzt zu korrigieren, da sie eine Antwort hat, aber eigentlich war rr auch ein einzelner Buchstabe. Ich glaube, es hat seinen Status als einzelner Buchstabe später als ll und ch verloren, daher ist die Erklärung in Wikipedia nicht so sehr falsch als nur teilweise.
Peter Taylor
"Tweo"? filler +
CalculatorFeline
3
@PeterTaylor Die offizielle Akademie (RAE) hat keinen rreinzigen Brief berücksichtigt . Zumindest nicht seit 1803. Aber es ist wahr, dass es anscheinend ein einzelner Brief in Amerika war
Luis Mendo
1
Sieht aus wie Ungarisch verdient eine separate, viel schwierigere Herausforderung :-)
Luis Mendo
1
Das walisische Alphabet enthält viele davon und ist wahrscheinlich interessant, da sie nicht in (englischer) alphabetischer Reihenfolge vorliegen oder alle lateinischen Zeichen enthalten: a, b, c, ch, d, d, e, f, ff, g, ng, h, ich, j, l, ll, m, n, o, p, ph, r, rh, s, t, th, u, w, y
Algy Taylor

Antworten:

7

Pyth, 14 13 Bytes

Update: sah, dass dies akzeptiert wurde und bemerkte eine triviale 1-Byte-Golf. Hoppla.

:D"ll|ch|."1Q

Probieren Sie es online aus. Testsuite.

Suchen Sie für jedes Wort alle nicht überlappenden Übereinstimmungen für den regulären Ausdruck ll|ch|.. Dies teilt das Wort in die "Buchstaben". Sortieren Sie dann einfach die Wörter nach den aufgeteilten Listen.

PurkkaKoodari
quelle
Toller Ansatz! (Jetzt, wo ich es endlich verstehe) :-)
Luis Mendo
Dieser Code ist absolut faszinierend:D
Erik der Outgolfer
3

PowerShell, 46 44 51 50 Byte

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

Das ΑZeichen ist der griechische Buchstabe Alpha, der nach allen lateinischen Buchstaben in der Standard-Sortierreihenfolge von PowerShell kommt (zumindest auf meinem Computer bin ich mir nicht sicher, ob es in anderen Ländereinstellungen anders ist). In der UTF8-Codierung werden 2 Byte gezählt.

Verwendungsbeispiel unter der Annahme, dass diese Zeichenfolge in einer Datei mit dem Namen gespeichert ist es-sort.ps1:

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

luego
lzego
llama
pswg
quelle
2

Mathematica, 81 Bytes

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

Gleicher Ansatz wie die Antwort von TimmyD.

CalculatorFeline
quelle
1

Python 2, 128 116 Bytes

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

Ich habe immer noch das Gefühl, dass es hier definitiv Raum für Verbesserungen gibt.

Orez
quelle
1

Javascript, 95 Bytes

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
quelle
1

Perl, 40 Bytes

Beinhaltet +1 für -p

Führen Sie mit der Liste der Wörter auf STDIN:

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

spanisort.pl

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