Todos conhecemos diferentes algoritmos de classificação sofisticados, mas nenhum deles fornece números de uma maneira fácil de pronunciar. Para remediar isso, proponho o uso do PronunciationSort ™, a maneira mais natural de classificar listas de números.
Pronúncia
As regras oficiais para pronunciar números (neste desafio) é que os dígitos são pronunciados um por um, e a sequência resultante é classificada em ordem lexicográfica. Como exemplo, isso significa que o número 845
é pronunciado "eight four five"
e deve ser classificado de acordo.
Números negativos
Os números negativos são pronunciados acrescentando a palavra "minus"
. Assim, -23
é pronunciado como "minus two three"
. Observe que isso faz com que os números negativos terminem no meio da saída, entre os números que começam com 4
(quatro) e 9
(nove).
Como guia, a ordem oficial das palavras para o PronunciationSort ™ é:
- oito
- cinco
- quatro
- menos
- nove
- 1
- Sete
- seis
- três
- dois
- zero
Isso é,
8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0
Entrada
Uma lista de números inteiros no intervalo , contendo no máximo 100 elementos. A entrada como uma lista de strings não é permitida. Se o seu idioma não suportar entrada como lista, é permitido fornecer entrada como números inteiros separados.
A entrada não conterá nenhum número inválido ou qualquer número começando com um 0 (exceto o próprio número 0). A entrada geralmente não será classificada, pode ser fornecida em qualquer ordem.
Saída
Os mesmos números inteiros, na ordem PronunciationSort ™. Observe que os números devem ser convertidos apenas em suas pronúncias para obter a classificação; a saída não deve conter nenhuma string.
Exemplos
Para os exemplos, a etapa do meio (entre parênteses) serve apenas como guia e não faz parte da saída.
[1, 2, 3] -> (['one', 'two', 'three']) -> [1, 3, 2]
[-1, 0, 1, 2] -> (['minus one', 'zero', 'one', 'two']) -> [-1, 1, 2, 0]
[-100, 45, 96] -> (['minus one zero zero', 'four five', 'nine six']) -> [45, -100, 96]
[11, 12, 13, 134, 135] -> (['one one', 'one two', 'one three', 'one three four', 'one three five']) -> [11, 13, 135, 134, 12]
Há também um script para verificar seus resultados .