(um paradoxo, um paradoxo, um paradoxo mais engenhoso)
Esta é a primeira parte de uma série multipartes inspirada em diferentes funções R.
A tarefa
Dado um conjunto de dados de inteiros positivos, eu preciso de você para calcular o resumo 5 Número de . No entanto, estou trabalhando em grandes conjuntos de dados, portanto, preciso que seu código seja o menor possível, permitindo que eu o armazene no meu computador.
O resumo de cinco números consiste em:
- Valor mínimo
- Primeiro quartil (Q1)
- Mediana / Segundo quartil (Q2)
- Terceiro quartil (Q3)
- Valor máximo
Existem várias maneiras diferentes de definir os quartis, mas usaremos o implementado por R:
Definições:
- Mínimo e máximo: os menores e os maiores valores, respectivamente.
- Mediana: o valor do meio, se tiver um número ímpar de entradas, e a média aritmética dos dois valores mais médios, se tiver um número par de entradas. Observe que isso significa que a mediana pode ser um valor não inteiro. Nós tivemos que calcular a mediana antes .
- Primeiro e Terceiro Quartis: Divida os dados em duas metades, incluindo o elemento central em cada metade, se tiver um número ímpar de entradas, e encontre o valor mediano de cada metade. A mediana da metade inferior é o Primeiro Quartil, e a mediana da metade superior é o Terceiro Quartil.
Exemplos:
. A mediana é então , e a metade inferior é , produzindo um primeiro quartil de , e a metade superior é , produzindo um terceiro quartil de .
. A mediana é e a metade inferior é , produzindo um primeiro quartil de , e a metade superior é , produzindo um terceiro quartil de .
Regras adicionais:
- A entrada é como uma matriz ou o equivalente mais próximo do seu idioma.
- Você pode assumir que a matriz está classificada em ordem crescente ou decrescente (mas especifique qual).
- Você pode devolver / imprimir os resultados em qualquer ordem consistente e no formato flexível que desejar, mas indique o pedido e o formato na sua resposta.
- Funções internas equivalentes a
fivenum
são permitidas, mas também implemente sua própria solução. - Você não pode assumir que cada um dos cinco números será um número inteiro.
- As explicações são incentivadas.
- Isso é código-golfe , e a resposta mais curta em cada idioma vence!
Casos de teste gerados aleatoriamente
1 1 1 1 1 2 2 2 2 2 3 3 4 4 4 4 4 5 5 5 -> 1 1.5 2.5 4 5
1 2 2 2 4 4 5 5 6 7 7 8 9 9 9 9 9 10 10 10 -> 1 4 7 9 10
2 2 2 6 8 10 15 16 21 22 23 24 26 33 35 38 38 45 46 47 48 -> 2 10 23 38 48
1 2 9 -> 1 1.5 2 5.5 9
1 2 3 3 3 4 9 -> 1 2.5 3 3.5 9
1 1 2 5 7 7 8 8 15 16 18 24 24 26 26 27 27 28 28 28 29 29 39 39 40 45 46 48 48 48 48 49 50 52 60 63 72 73 79 85 86 87 88 90 91 93 94 95 95 97 100 -> 1 25 45 76 100
2 2 4 4 6 8 10 11 13 14 14 15 17 21 23 24 26 27 27 28 28 30 31 33 33 34 36 36 38 38 39 40 41 42 42 43 45 45 47 47 47 47 47 48 48 48 50 51 53 53 55 56 56 56 57 57 58 62 62 63 64 64 65 65 66 67 67 67 68 69 69 71 71 71 74 79 80 81 81 81 82 82 83 83 86 86 86 87 89 94 94 94 95 95 97 98 99 100 100 100 -> 2 33.5 54 76.5 100
1 3 3 4 -> 1 2 3 3.5 4
1 3 3 3 4 -> 1 3 3 3 4
quantile
retorna um vetor nomeado, enquantofivenum
não tem nome. Talvez seja um problema a jusante de ondefivenum
é usado?