Завдання
З огляду на вхідний список цілих чисел x 1 … x n , обчисліть список рангів r 1 … r n (перестановка {1… n} ), щоб x r 1 ≤ x r 2 ≤… ≤ x r n . Потім для кожного x i замініть його ранг середнім арифметичним рядами всіх значень у x , рівних x i . (Тобто, коли існує розрив між рівними значеннями в x , досить перерозподілити ранги між усіма ними.) Виведіть модифікований список рангів r ' 1 … r'н .
(Для вигуків статистики: такий рейтинг спостережень використовується в тесті Манна – Вітні U (метод другий, крок 1.))
Приклад
З огляду на вхідний список [3, -6, 3, 3, 14, 3] , перший список рангів буде [2, 1, 3, 4, 6, 5] , який би сортував цей список за [-6, 3, 3, 3, 3, 14] . Потім ранги за всі 3 с у вхідному списку вирівнюються в (2 + 3 + 4 + 5) ÷ 4 = 3,5 . Кінцевий вихід - [3,5, 1, 3,5, 3,5, 6, 3,5] .
Тестові справи
[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]
Правила
Це код-гольф , тому найкоротший код у байтах виграє.