Przed 1994 r. Hiszpańskie słowniki używały kolejności alfabetycznej ze szczególną osobliwością : digrafów ll
i ch
były uważane za pojedyncze litery. ch
natychmiast nastąpiło c
i ll
natychmiast nastąpiło l
. Dodając list ñ
, który następuje n
po hiszpańsku, kolejność była wtedy:
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
Od 1994 roku ll
i ch
są uznawane za grupy dwóch liter ( l
, l
i c
, h
odpowiednio), a zatem kolejności alfabetycznej jest taka sama jak w języku angielskim, z wyjątkiem litery ñ
.
Stare zamówienie było zdecydowanie bardziej interesujące .
Wyzwanie
Wprowadź listę zero lub więcej słów i wypisz listę posortowaną według starej hiszpańskiej kolejności alfabetycznej. Sortowanie odbywa się między wyrazami (nie między literami w środku słowa). Oznacza to, że słowa są atomowe, a wynik będzie zawierać te same słowa w możliwie innej kolejności.
W celu uproszczenia, nie będziemy rozważać list ñ
lub akcentowane samogłoski á
, é
, í
, ó
, ú
, lub wielkimi literami. Każde słowo będzie sekwencją jednego lub więcej znaków wziętych z zakresu od ASCII 97 ( a
) do ASCII 122 ( z
).
Jeśli są więcej niż dwie l
litery z rzędu, należy je pogrupować od lewej do prawej. To znaczy, lll
jest ll
i wtedy l
(nie l
i wtedy ll
).
Format wejściowy może być: słowa oddzielone spacjami, znakami nowej linii lub dowolnym dogodnym znakiem. Słowa mogą być otoczone cudzysłowami lub nie, według własnego wyboru. Dopuszczalna jest również lista lub tablica słów. Każdy rozsądny format jest ważny; po prostu podaj to w swojej odpowiedzi.
W podobny sposób, wyjście będzie miało dowolny rozsądny format (niekoniecznie taki sam jak wejście).
Code golf, najkrótsze wygrane.
Przypadki testowe
W poniższych przykładach słowa są oddzielone spacjami. Pierwszy wiersz jest wprowadzany, drugi jest wyprowadzany:
llama coche luego cocina caldo callar calma
caldo calma callar cocina coche luego llama
cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva
„Słowa” mogą być również pojedynczymi literami:
b c a ch ll m l n
a b c ch l ll m n
lub mało prawdopodobne kombinacje (pamiętaj o zasadzie l
pogrupowanej od lewej do prawej):
lll llc llz llll lllz
llc lll lllz llll llz
Puste wejście powinno dać puste wyjście:
Oczywiście ta kolejność może być zastosowana również w innych językach:
chiaro diventare cucchiaio
cucchiaio chiaro diventare
all alternative almond at ally a amber
a almond alternative all ally amber at
rr
ani jednej litery ; przynajmniej nie od 1803 roku. Ale prawdą jest, że najwyraźniej był uważany za jedną literę w obu AmerykachOdpowiedzi:
Pyth,
1413 bajtówAktualizacja: zobaczyłem, że został zaakceptowany i zauważyłem trywialny 1-bajtowy golf. Ups
Wypróbuj online. Zestaw testowy.
Dla każdego słowa znajdź wszystkie pasujące do siebie dopasowania wyrażenia regularnego
ll|ch|.
. To dzieli słowo na „litery”. Następnie posortuj słowa według podzielonych list.źródło
:D
PowerShell,
46445150 bajtówJest
Α
to grecka litera alfa, która pojawia się po wszystkich literach łacińskich w domyślnej kolejności sortowania programu PowerShell (przynajmniej na moim komputerze nie jestem pewien, czy różni się w innych lokalizacjach). Jest liczony jako 2 bajty w kodowaniu UTF8.Przykładowe użycie, zakładając, że ten ciąg jest zapisany w pliku o nazwie
es-sort.ps1
:źródło
Mathematica, 81 bajtów
Takie samo podejście jak odpowiedź TimmyD.
źródło
Python 2,
128116 bajtówNadal mam wrażenie, że jest tu zdecydowanie miejsce na ulepszenia.
źródło
JavaScript, 95 bajtów
źródło
Perl, 40 bajtów
Obejmuje +1 dla
-p
Uruchom z listą słów na STDIN:
spanisort.pl
źródło