Antes de 1994, os dicionários espanhóis usavam ordem alfabética com uma peculiaridade : dígrafos ll
e ch
eram considerados como se fossem letras únicas. ch
imediatamente seguido c
e ll
imediatamente seguido l
. Adicionando a carta ñ
, que segue n
em espanhol, a ordem era então:
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
e ch
são considerados grupos de duas letras ( l
, l
e c
, h
respectivamente), e, portanto, a ordem alfabética é a mesma do inglês, com exceção da letra ñ
.
A ordem antiga era definitivamente mais interessante .
O desafio
Insira uma lista de zero ou mais palavras e produza a lista classificada de acordo com a antiga ordem alfabética em espanhol. A classificação é entre palavras (não entre letras dentro de uma palavra). Ou seja, as palavras são atômicas e a saída conterá as mesmas palavras em uma ordem possivelmente diferente.
Para simplificar, não vamos considerar carta ñ
, ou vogais acentuadas á
, é
, í
, ó
, ú
, ou maiúscula letras. Cada palavra será uma sequência de um ou mais caracteres extraídos do intervalo inclusivo de ASCII 97 ( a
) a ASCII 122 ( z
).
Se houver mais de duas l
letras seguidas, elas deverão ser agrupadas da esquerda para a direita. Ou seja, lll
é ll
e então l
(não l
e então ll
).
O formato de entrada pode ser: palavras separadas por espaços, novas linhas ou qualquer caractere conveniente. As palavras podem estar entre aspas ou não, à sua escolha. Uma lista ou matriz de palavras também é aceitável. Qualquer formato razoável é válido; apenas diga na sua resposta.
De maneira semelhante, a saída terá qualquer formato razoável (não necessariamente o mesmo que a entrada).
Código de golfe, vitórias mais curtas.
Casos de teste
Nos exemplos a seguir, as palavras são separadas por espaços. A primeira linha é entrada, a segunda é saída:
llama coche luego cocina caldo callar calma
caldo calma callar cocina coche luego llama
cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva
"Palavras" também podem ser letras simples:
b c a ch ll m l n
a b c ch l ll m n
ou combinações improváveis (lembre-se da regra que l
está agrupada da esquerda para a direita):
lll llc llz llll lllz
llc lll lllz llll llz
Uma entrada vazia deve fornecer uma saída vazia:
Obviamente, esse pedido também pode ser aplicado a outros idiomas:
chiaro diventare cucchiaio
cucchiaio chiaro diventare
all alternative almond at ally a amber
a almond alternative all ally amber at
rr
uma única letra ; pelo menos não desde 1803. Mas é verdade que, aparentemente, foi considerado uma única letra nas AméricasRespostas:
Pitão,
1413 bytesAtualização: viu isso ser aceito e notou um trivial golfe de 1 byte. Ops.
Experimente online. Suíte de teste.
Para cada palavra, encontre todas as correspondências não sobrepostas para a regex
ll|ch|.
. Isso divide a palavra em "letras". Depois, basta classificar as palavras pelas listas divididas.fonte
:D
PowerShell,
46445150 bytesO
Α
caractere é a letra grega alfa que vem depois de todas as letras latinas na ordem de classificação padrão do PowerShell (pelo menos na minha máquina, não tenho certeza se é diferente em outros locais). É contado como 2 bytes na codificação UTF8.Exemplo de uso, supondo que essa sequência seja salva em um arquivo chamado
es-sort.ps1
:fonte
Mathematica, 81 bytes
Mesma abordagem que a resposta de TimmyD.
fonte
Python 2,
128116 bytesEu ainda sinto que definitivamente há espaço para melhorias aqui.
fonte
Javascript, 95 bytes
fonte
Perl, 40 bytes
Inclui +1 para
-p
Execute com a lista de palavras em STDIN:
spanisort.pl
fonte