Ordenação em R: Order (Parte I)

R, uma linguagem de programação usada para Estatística e Análise de Dados, tem a função order, que retorna uma lista com os índices necessários para ordenar o vetor original(∗).

Por exemplo:

my_list = [1, 3, 3, 9, 8]
# Ordered would be: [0, 1, 2, 4, 3]

Em palavras simples, order informa quais elementos você deve observar no vetor original para ordená-lo. A lista my_list[0] + my_list[1] + my_list[2] + my_list[4] + my_list[3] equivale a sorted(my_list).

Se dois ou mais elementos tiverem a mesma ordem, a ordem original deles será preservada. Aqui, [0, 1, 2, 4, 3] e [0, 2, 1, 4, 3] ordenariam o vetor, mas apenas o primeiro preserva a ordem original dos dois 3s.

Implemente a função order() para que ela funcione da mesma forma que em R.

Exemplos

order([9, 1, 4, 5, 4]) ➞ [1, 2, 4, 3, 0]

order(["z", "c", "f", "b", "c"]) ➞ [3, 1, 4, 2, 0]

order(["order", "my", "words"]) ➞ [1, 0, 2]

Observações

  • Espere apenas números e caracteres alfabéticos minúsculos.
  • Encontre a Parte II: Rank aqui.
  • Vetores em R são semelhantes a uma lista. Embora os vetores em R sejam indexados a partir de 1, sua função deve usar índices a partir de 0. Outras diferenças entre vetores e listas serão ignoradas no escopo deste desafio.
  • Se você implementar seu próprio algoritmo, ele deverá ser estável, o que significa que a ordem de elementos idênticos não será alterada.