(un paradosso, un paradosso, un paradosso molto geniale)
Questa è la prima parte di una serie multipart ispirata a diverse funzioni R.
L'obiettivo
Dato un insieme di dati di interi positivi, ho bisogno di calcolare il sommario 5 il numero di . Tuttavia, sto lavorando su set di dati di grandi dimensioni, quindi ho bisogno che il tuo codice sia il più piccolo possibile, permettendomi di memorizzarlo sul mio computer.
Il riepilogo dei cinque numeri è composto da:
- Valore minimo
- Primo quartile (Q1)
- Mediana / Secondo quartile (Q2)
- Terzo quartile (Q3)
- Valore massimo
Esistono diversi modi per definire i quartili, ma useremo quello implementato da R:
definizioni:
- Minimo e massimo: i valori più piccoli e più grandi, rispettivamente.
- Mediana: il valore medio se ha un numero dispari di voci e la media aritmetica dei due valori più centrali se ha un numero pari di voci. Si noti che ciò significa che la mediana può essere un valore non intero. In precedenza abbiamo dovuto calcolare la mediana .
- Primo e terzo quartile: dividi i dati in due metà, incluso l'elemento centrale in ogni metà se ha un numero dispari di voci e trova il valore mediano di ciascuna metà. La mediana della metà inferiore è il primo quartile e la mediana della metà superiore è il terzo quartile.
Esempi:
3 . La mediana è quindi e la metà inferiore è [ 1 , 2 , 3 ] , producendo un primo quartile di 2 , e la metà superiore è [ 3 , 4 , 5 ] , producendo un terzo quartile di 4 .
. La mediana è e la metà inferiore è , producendo un primo quartile di , e la metà superiore è , producendo un terzo quartile di .
Regole aggiuntive:
- L'input è un array o l'equivalente più vicino della tua lingua.
- Si può presumere che l'array sia ordinato in ordine crescente o decrescente (ma specificare quale).
- Puoi restituire / stampare i risultati in qualsiasi ordine coerente e in qualsiasi formato flessibile ti piaccia, ma ti preghiamo di indicare l'ordine e il formato nella tua risposta.
fivenum
Sono ammesse funzioni integrate equivalenti a , ma implementa anche la tua soluzione.- Si può non assumere ciascuno dei cinque numeri sarà un numero intero.
- Le spiegazioni sono incoraggiate.
- Questo è code-golf , quindi vince la risposta più breve in ogni lingua!
Casi di test generati casualmente
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
restituisce un vettore con nome, mentrefivenum
è senza nome. Forse questo è un problema a valle di dovefivenum
viene utilizzato?