私はこのサイトのために作っている別の挑戦に取り組んでいる間、この問題に遭遇しました。そのチャレンジでは、「マリオカート8スコアリング」を利用します。k位のプレーヤーが獲得するポイントの量は、この1インデックス配列[15,12,10,9,8,7,6,5,4,3,2,1]で表されます。したがって、1位には15ポイント、2位には12ポイントなどが割り当てられます。
このようにポイントを割り当てるのは十分簡単ですが、トリッキーな部分にはタイの処理方法が付属しています。私がしていることは、各タイイングプレイヤーに各タイイングプレイスに与えられたポイントの平均を与えることです。たとえば、1番目と2番目だけが同点の場合、両方のプレイヤーは(15 + 12)/ 2 = 13.5ポイントを獲得します。(注:最も近い整数に丸めることができるため、13または14の両方を使用することもできます。)3位から12位までは、通常の位置のポイントを獲得します。
チャレンジ
12個の非負の整数スコアが徐々にソートされている場合、各プレーヤーが獲得するポイント数を出力します。入力としてポイントリスト[15,12,10,9、...]を使用することもできます。各プレイヤーが獲得するポイントの数は、スコアの実際の値ではなく、他のスコアとの比較方法に依存することに注意してください。
テストケース
- 【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,15,15,10,9,8,7,6,5,4,3] => 15、10,10,10、8,7,6,5,4,3,2、 1]
- 説明:(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 ]
- 説明:(15 + 12 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1)/ 12 = 6.8333
- 【20,20,20,20,10,10,10,9,8,7,6,5] => [ 12,12,12,12、7,7,7、5,4,3,2、 1]
- 説明:(15 + 12 + 10 + 9)/ 4 = 11.5、(8 + 7 + 6)/ 3 = 7
- 【100,99,98,95,95,95,94,93,93,92,91,91] => [15,12,10、8,8,8、6、5,5、3、2、 2 ]
- 説明:(9 + 8 + 7)/ 3 = 8、(5 + 4)/ 2 = 4.5、(2 + 1)/ 2 = 1.5