Tôi gặp vấn đề này trong khi thực hiện một thử thách khác mà tôi đang thực hiện cho trang web này. Trong thử thách đó, tôi sử dụng " Mario Kart 8 chấm điểm ". Số lượng điểm mà người chơi ở vị trí thứ k nhận được được biểu thị bằng mảng 1 chỉ mục này: [15,12,10,9,8,7,6,5,4,3,2,1]. Vì vậy, vị trí thứ nhất được 15 điểm, vị trí thứ 2 được 12 điểm, v.v.
Thật dễ dàng để gán các điểm như thế này, tuy nhiên phần khó khăn đi kèm với cách tôi xử lý các mối quan hệ. Những gì tôi làm là cung cấp cho mỗi người chơi buộc trung bình số điểm cho mỗi vị trí buộc. Ví dụ: nếu chỉ ràng buộc thứ 1 và thứ 2, thì cả hai người chơi sẽ nhận được (15 + 12) / 2 = 13,5 điểm. (Lưu ý: Bạn được phép làm tròn đến số int gần nhất, vì vậy cả 13 hoặc 14 đều được chấp nhận.) Sau đó, vị trí thứ 3 - 12 có được số điểm bình thường cho vị trí của họ.
Thử thách
Cho 12 điểm số nguyên không âm được sắp xếp tăng dần, xuất ra số điểm mỗi người chơi được. Bạn cũng có thể lấy danh sách điểm [15,12,10,9, ...] làm đầu vào. Lưu ý rằng số điểm mà mỗi người chơi đạt được không phụ thuộc vào giá trị thực của điểm số, mà là cách họ so sánh với các điểm khác.
Các trường hợp thử nghiệm
- [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]
- giải thích: (12 + 10 + 9) / 3 = 10.3333
- [1,1,1,1,1,1,1,1,1,1,1,1] => [ 7,7,7,7,7,7,7,7,7,7,7, 7 ]
- giải thích: (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]
- giải thích: (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 ]
- giải thích: (9 + 8 + 7) / 3 = 8, (5 + 4) / 2 = 4.5, (2 + 1) / 2 = 1.5
Liên quan: Xếp hạng danh sách điểm số với "bỏ qua"