В конкурентных сценариях часто необходимо присваивать ранги или рейтинги отдельным лицам на основе их результатов. В этом сообщении блога обсуждается проблема, когда нам дается массив оценок, отражающий результаты отдельных участников соревнования. Наша задача — присвоить каждому человеку уникальные ранговые метки на основе его баллов. Три верхних ранга связаны с конкретными медалями, а остальным рангам присвоены номера мест. Мы предоставим решение как на JavaScript, так и на Python, а также приведем пример, иллюстрирующий подход.
Постановка задачи:
Учитывая массив целых чисел scores
, представляющих результаты участников соревнования, наша цель — присвоить каждому человеку уникальные метки ранга на основе его результатов. Первое звание получает «Золотую медаль», второе звание — «Серебряную медаль», а третье звание — «Бронзовую медаль». Для рангов с 4 по n людям присваивается номер места в качестве ранга.
Реализация JavaScript:
function assignRanks(scores) { const sortedScores = [...scores].sort((a, b) => b - a); const ranks = []; for (let i = 0; i < scores.length; i++) { if (i === 0) { ranks.push("Golden Medal"); } else if (i === 1) { ranks.push("Silver Medal"); } else if (i === 2) { ranks.push("Bronze Medal"); } else { ranks.push((i + 1).toString()); } } return ranks; } // Example usage const scores = [5, 4, 3, 2, 1]; const result = assignRanks(scores); console.log(result); // Output: ["Golden Medal", "Silver Medal", "Bronze Medal", "4", "5"]
Объяснение:
- Функция AssignRanks принимает на вход массив оценок.
- Мы создаем копию массива оценок и сортируем ее в порядке убывания, используя метод sort.
- Мы инициализируем пустой массив Ranks для хранения назначенных рангов.
- Мы перебираем массив оценок с помощью цикла for и присваиваем ранги на основе индекса.
- Первым трем индексам (0, 1 и 2) присваиваем соответствующие медальные звания.
- Остальным индексам мы присваиваем номер размещения, преобразуя индекс в строку с помощью метода toString и помещая его в массив Ranks.
- Наконец, мы возвращаем массив рангов.
Реализация Python:
def assign_ranks(scores): sorted_scores = sorted(scores, reverse=True) ranks = [] for i in range(len(scores)): if i == 0: ranks.append("Golden Medal") elif i == 1: ranks.append("Silver Medal") elif i == 2: ranks.append("Bronze Medal") else: ranks.append(str(i + 1)) return ranks # Example usage scores = [5, 4, 3, 2, 1] result = assign_ranks(scores) print(result) # Output: ["Golden Medal", "Silver Medal", "Bronze Medal", "4", "5"]
Объяснение:
- Функция Assign_ranks принимает список оценок в качестве входных данных.
- Мы создаем отсортированную версию списка результатов в порядке убывания, используя функцию sorted.
- Мы инициализируем пустой список Ranks для хранения назначенных рангов.
- Мы перебираем список оценок с помощью цикла for и присваиваем ранги на основе индекса.
- Первым трем индексам (0, 1 и 2) присваиваем соответствующие медальные звания.
- Остальным индексам мы присваиваем номер места, преобразуя индекс в строку с помощью функции str и добавляя его в список рангов.
- Наконец, мы возвращаем список рангов.
Заключение:
В этом сообщении блога мы обсудили проблему присвоения уникальных рейтингов в соревнованиях. Мы предоставили решения как на JavaScript, так и на Python, продемонстрировав, как присваивать ранги на основе оценок, одновременно связывая три верхних ранга с конкретными медалями. Используя методы сортировки и итерации, мы смогли присвоить соответствующие ранги каждому участнику конкурса.
Примечание::
👋Привет! Если у вас есть острые вопросы или вы просто хотите поздороваться, не стесняйтесь — я на расстоянии всего лишь сообщения. 💬 Вы можете связаться со мной по адресу [email protected].
🤝 Кстати, я думаю, у нас одинаковый интерес к разработке программного обеспечения — давайте подключимся к LinkedIn! 💻