Aufgabe
Berechnen Sie aus einer eingegebenen Liste von Ganzzahlen x 1 … x n eine Liste von Rängen r 1 … r n (eine Permutation von {1… n} ), sodass x r 1 ≤ x r 2 ≤… ≤ x r n . Ersetzen Sie dann für jedes x i seinen Rang durch das arithmetische Mittel der Ränge aller Werte in x , die gleich x i sind . (Das heißt, wenn es einen Gleichstand zwischen gleichen Werten in x gibt , verteilen Sie die Ränge unter allen fair neu.) Geben Sie die modifizierte Liste der Ränge r ' n aus 1 … r' aus. .
(Für Statistikfreaks: Eine solche Rangfolge von Beobachtungen wird im Mann-Whitney- U- Test (Methode zwei, Schritt 1) verwendet.)
Beispiel
Bei einer Eingabeliste [3, -6, 3, 3, 14, 3] wäre die erste Rangliste [2, 1, 3, 4, 6, 5] , wodurch die Liste in [-6, 3, 3, 3, 3, 14] . Dann werden die Ränge für alle 3 s in der Eingabeliste auf (2 + 3 + 4 + 5) ÷ 4 = 3,5 ausgeglichen . Die endgültige Ausgabe ist [3.5, 1, 3.5, 3.5, 6, 3.5] .
Testfälle
[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]
Regeln
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.