Ispirato a questa domanda Stack Overflow: Ordinamento di un elenco: numeri in ordine crescente, lettere in ordine decrescente . Il tuo compito è risolvere il seguente problema e, dato che si tratta di code-golf , dovresti farlo nel minor numero di byte possibile.
Si dovrebbe prendere un elenco di oggetti come input contenente lettere (qualsiasi forma ragionevole: string
, char
, ecc) e numeri. È quindi necessario ordinare i numeri in ordine crescente e le lettere in ordine decrescente. Tuttavia, è necessario mantenere le lettere nelle posizioni delle lettere e i numeri nelle posizioni dei numeri. Ad esempio, se l'elenco è:
[L, D, L, L, D, L]
L'elenco di output dovrebbe essere sotto forma di:
[L, D, L, L, D, L]
Workthrough
Ingresso: ['a', 2, 'b', 1, 'c', 3]
- Ordina i numeri in ordine crescente:
[1, 2, 3]
- Ordina le lettere in ordine decrescente:
['c', 'b', 'a']
- Unisciti a loro ma mantieni l'ordine uguale:
['c', 1', 'b', 2, 'a', 3]
Regole
- L'elenco conterrà solo lettere e cifre.
- L'elenco potrebbe essere vuoto.
- L'elenco può contenere solo lettere o solo cifre.
- Se la tua lingua non supporta matrici di tipo misto, puoi utilizzare caratteri numerici anziché numeri. Nota che se la tua lingua lo supporta, devi usare tipi misti.
- Le lettere saranno solo
[a-z]
o[A-Z]
, puoi scegliere quale. - Le lettere sono ordinate come le
a
più basse,z
ovvero quelle più altea = 1, z = 26
. - Sono vietate le scappatoie standard .
- L'I / O può essere con qualsiasi mezzo standard, incluso come stringa.
Casi test
[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]
Dato che si tratta di code-golf, vince la risposta più breve in byte!