Natknąłem się na ten problem podczas pracy nad innym wyzwaniem dla tej witryny. W tym wyzwaniu wykorzystuję „ Mario Kart 8 Scoring ”. Ilość punktów, które gracz otrzymuje na k- tym miejscu, jest reprezentowana przez 1-indeksowaną tablicę: [15,12,10,9,8,8,7,6,5,4,3,2,1]. Tak więc pierwsze miejsce otrzymuje 15 punktów, drugie miejsce 12 punktów itp.
Łatwo jest przypisywać takie punkty, jednak trudna część polega na tym, jak radzę sobie z remisami. To, co robię, to daje każdemu graczowi wiążącemu średnią liczbę punktów za każde miejsce wiązania. Na przykład, jeśli tylko 1. i 2. remis, to obaj gracze otrzymują (15 + 12) / 2 = 13,5 punktów. (Uwaga: możesz zaokrąglać do najbliższej liczby całkowitej, więc 13 lub 14 są również dopuszczalne.) Następnie miejsca od 3 do 12 otrzymują normalną liczbę punktów za ich pozycję.
Wyzwanie
Biorąc pod uwagę 12 nieujemnych liczb całkowitych, które są coraz mniej posortowane, wypisuje liczbę punktów, jaką otrzymuje każdy gracz. Możesz również wziąć listę punktów [15,12,10,9, ...] jako dane wejściowe. Zauważ, że liczba punktów, jaką otrzymuje każdy gracz, nie zależy od rzeczywistych wartości wyników, ale od ich porównania z innymi wynikami.
Przypadki testowe
- [21,21,15,14,12,9,6,5,4,3,2,1] => [ 14,14 , 10,9,8,7,6,5,4,3,2, 1]
- [20,15,155,15,10,9,8,7,6,5,4,3] => [15, 10,10,10 , 8,7,6,5,4,3,2, 1]
- wyjaśnienie: (12 + 10 + 9) / 3 = 10,3333
- [1,1,1,1,1,1,1,1,1,1,1,1,1] => [ 7,7,7,7,7,7,7,7,7,7,7,7, 7 ]
- wyjaśnienie: (15 + 12 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1) / 12 = 6,8333
- [20,20,20,20,10,10,10,10,9,8,7,6,5] => [ 12,12,12,12 , 7,7,7 , 5,4,3,2, 1]
- wyjaśnienie: (15 + 12 + 10 + 9) / 4 = 11,5, (8 + 7 + 6) / 3 = 7
- [100,99,98,95,95,95,95,93,93,92,92,91,91] => [15,12,10, 8,8,8 , 6, 5,5 , 3, 2, 2 ]
- wyjaśnienie: (9 + 8 + 7) / 3 = 8, (5 + 4) / 2 = 4,5, (2 + 1) / 2 = 1,5
Powiązane: Ranking listy wyników za pomocą „pomija”