Compito
Dato un elenco di input di numeri interi x 1 … x n , calcola un elenco di ranghi r 1 … r n (una permutazione di {1… n} ) in modo che x r 1 ≤ x r 2 ≤… ≤ x r n . Quindi, per ogni x i , sostituisci il suo rango con la media aritmetica dei ranghi di tutti i valori in x che sono uguali a x i . (Cioè, ogni volta che c'è un legame tra valori uguali in x , ridistribuire abbastanza i ranghi tra tutti loro.) Output dell'elenco modificato dei ranghi r ' 1 ... r'n .
(Per i fanatici delle statistiche: una tale classificazione delle osservazioni viene utilizzata nel test U di Mann – Whitney (metodo due, passaggio 1))
Esempio
Dato un elenco di input [3, -6, 3, 3, 14, 3] , il primo elenco di ranghi sarebbe [2, 1, 3, 4, 6, 5] , che ordinerebbe l'elenco in [-6, 3, 3, 3, 3, 14] . Quindi, le classifiche per tutti e 3 i nell'elenco degli input vengono uniformate in (2 + 3 + 4 + 5) ÷ 4 = 3.5 . L'output finale è [3.5, 1, 3.5, 3.5, 6, 3.5] .
Casi test
[4, 1, 4] -> [2.5, 1.0, 2.5]
[5, 14, 14, 14, 14, 5, 14] -> [1.5, 5.0, 5.0, 5.0, 5.0, 1.5, 5.0]
[9, 9, -5, -5, 13, -5, 13, 9, 9, 13] -> [5.5, 5.5, 2.0, 2.0, 9.0, 2.0, 9.0, 5.5, 5.5, 9.0]
[13, 16, 2, -5, -5, -5, 13, 16, -5, -5] -> [7.5, 9.5, 6.0, 3.0, 3.0, 3.0, 7.5, 9.5, 3.0, 3.0]
Regole
Questo è code-golf , quindi vince il codice più breve in byte.