Inspirado por esta pergunta de estouro de pilha: Classificando uma lista: números em ordem crescente, letras em ordem decrescente . Sua tarefa é resolver o seguinte problema e, como esse é o código-golfe , você deve fazê-lo com o menor número de bytes possível.
Você deve ter uma lista de objetos como entrada contendo letras (qualquer forma razoável: string
, char
, etc) e números. Você deve classificar os números em ordem crescente e as letras em ordem decrescente. No entanto, você deve manter as letras nas posições das letras e os números nas posições numéricas. Por exemplo, se a lista for:
[L, D, L, L, D, L]
A lista de saída deve estar na forma de:
[L, D, L, L, D, L]
Trabalhar com
Entrada: ['a', 2, 'b', 1, 'c', 3]
- Classifique os números em ordem crescente:
[1, 2, 3]
- Classifique as letras em ordem decrescente:
['c', 'b', 'a']
- Junte-os de volta, mas mantenha a ordem da mesma forma:
['c', 1', 'b', 2, 'a', 3]
Regras
- A lista conterá apenas letras e dígitos.
- A lista pode estar vazia.
- A lista pode conter apenas letras ou apenas dígitos.
- Se o seu idioma não suportar matrizes de tipo misto, você poderá usar caracteres de dígito em vez de números. Observe que se o seu idioma suportar isso, você deverá usar tipos mistos.
- As letras serão apenas
[a-z]
ou[A-Z]
, você pode escolher qual delas. - As letras são classificadas como
a
sendo as mais baixas,z
ou seja , as mais altasa = 1, z = 26
. - As brechas padrão são proibidas.
- A E / S pode ser realizada por qualquer meio padrão, incluindo uma string.
Casos de teste
[5, 'a', 'x', 3, 6, 'b'] -> [3, 'x', 'b', 5, 6, 'a']
[ 3, 2, 1] -> [ 1, 2, 3 ]
[ 'a', 'b', 'c' ] -> [ 'c', 'b', 'a' ]
[] -> []
[ 2, 3, 2, 1 ] -> [1, 2, 2, 3]
Como este é o código-golfe, a resposta mais curta em bytes vence!