Antes de 1994, los diccionarios de español usaban el orden alfabético con una peculiaridad : los dígrafos ll
y ch
se consideraban como letras simples. ch
Seguido de inmediato c
, e ll
inmediatamente seguido l
. Agregando la carta ñ
, que sigue n
en español, el orden fue entonces:
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
Desde 1994 ll
y ch
se consideran como grupos de dos letras ( l
, l
y c
, h
respectivamente), y por lo tanto el orden alfabético es el mismo que en inglés, con la excepción de la letra ñ
.
El viejo orden definitivamente era más interesante .
El reto
Ingrese una lista de cero o más palabras y envíe la lista ordenada según el antiguo orden alfabético español. La clasificación es entre palabras (no entre letras dentro de una palabra). Es decir, las palabras son atómicas y la salida contendrá las mismas palabras en un orden posiblemente diferente.
Para simplificar, no vamos a considerar la carta ñ
, o vocales acentuadas á
, é
, í
, ó
, ú
, o de letras en mayúsculas. Cada palabra será una secuencia de uno o más caracteres tomados del rango inclusivo desde ASCII 97 ( a
) hasta ASCII 122 ( z
).
Si hay más de dos l
letras seguidas, deben agruparse de izquierda a derecha. Es decir, lll
es ll
y luego l
(no l
y luego ll
).
El formato de entrada puede ser: palabras separadas por espacios, por nuevas líneas o cualquier carácter conveniente. Las palabras pueden estar entre comillas o no, a su elección. Una lista o conjunto de palabras también es aceptable. Cualquier formato razonable es válido; solo dilo en tu respuesta.
De manera similar, la salida tendrá cualquier formato razonable (no necesariamente el mismo que la entrada).
Código de golf, victorias más cortas.
Casos de prueba
En los siguientes ejemplos, las palabras están separadas por espacios. La primera línea es entrada, la segunda es salida:
llama coche luego cocina caldo callar calma
caldo calma callar cocina coche luego llama
cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva
Las "palabras" también pueden ser letras simples:
b c a ch ll m l n
a b c ch l ll m n
o combinaciones poco probables (recuerde la regla que l
se agrupa de izquierda a derecha):
lll llc llz llll lllz
llc lll lllz llll llz
Una entrada vacía debería dar una salida vacía:
Por supuesto, este orden también se puede aplicar a otros idiomas:
chiaro diventare cucchiaio
cucchiaio chiaro diventare
all alternative almond at ally a amber
a almond alternative all ally amber at
rr
una sola carta ; al menos no desde 1803. Pero es cierto que aparentemente se consideró una sola carta en las AméricasRespuestas:
Pyth,
1413 bytesActualización: vi que esto fue aceptado y noté un trivial golf de 1 byte. Whoops
Pruébalo en línea. Banco de pruebas.
Para cada palabra, encuentre todas las coincidencias no superpuestas para la expresión regular
ll|ch|.
. Esto divide la palabra en las "letras". Luego, solo ordena las palabras por las listas divididas.fuente
:D
PowerShell,
46445150 bytesEl
Α
carácter es la letra alfa griega que aparece después de todas las letras latinas en el orden de clasificación predeterminado de PowerShell (al menos en mi máquina, no estoy seguro de si es diferente en otras configuraciones regionales). Se cuenta como 2 bytes en la codificación UTF8.Ejemplo de uso, suponiendo que esta cadena se guarde en un archivo llamado
es-sort.ps1
:fuente
Mathematica, 81 bytes
El mismo enfoque que la respuesta de TimmyD.
fuente
Python 2,
128116 bytesTodavía siento que definitivamente hay margen de mejora aquí.
fuente
Javascript, 95 bytes
fuente
Perl, 40 bytes
Incluye +1 para
-p
Ejecute con la lista de palabras en STDIN:
spanisort.pl
fuente