В конкурентных сценариях часто необходимо присваивать ранги или рейтинги отдельным лицам на основе их результатов. В этом сообщении блога обсуждается проблема, когда нам дается массив оценок, отражающий результаты отдельных участников соревнования. Наша задача — присвоить каждому человеку уникальные ранговые метки на основе его баллов. Три верхних ранга связаны с конкретными медалями, а остальным рангам присвоены номера мест. Мы предоставим решение как на 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"]

Объяснение:

  1. Функция AssignRanks принимает на вход массив оценок.
  2. Мы создаем копию массива оценок и сортируем ее в порядке убывания, используя метод sort.
  3. Мы инициализируем пустой массив Ranks для хранения назначенных рангов.
  4. Мы перебираем массив оценок с помощью цикла for и присваиваем ранги на основе индекса.
  5. Первым трем индексам (0, 1 и 2) присваиваем соответствующие медальные звания.
  6. Остальным индексам мы присваиваем номер размещения, преобразуя индекс в строку с помощью метода toString и помещая его в массив Ranks.
  7. Наконец, мы возвращаем массив рангов.

Реализация 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"]

Объяснение:

  1. Функция Assign_ranks принимает список оценок в качестве входных данных.
  2. Мы создаем отсортированную версию списка результатов в порядке убывания, используя функцию sorted.
  3. Мы инициализируем пустой список Ranks для хранения назначенных рангов.
  4. Мы перебираем список оценок с помощью цикла for и присваиваем ранги на основе индекса.
  5. Первым трем индексам (0, 1 и 2) присваиваем соответствующие медальные звания.
  6. Остальным индексам мы присваиваем номер места, преобразуя индекс в строку с помощью функции str и добавляя его в список рангов.
  7. Наконец, мы возвращаем список рангов.

Заключение:

В этом сообщении блога мы обсудили проблему присвоения уникальных рейтингов в соревнованиях. Мы предоставили решения как на JavaScript, так и на Python, продемонстрировав, как присваивать ранги на основе оценок, одновременно связывая три верхних ранга с конкретными медалями. Используя методы сортировки и итерации, мы смогли присвоить соответствующие ранги каждому участнику конкурса.

Примечание::

👋Привет! Если у вас есть острые вопросы или вы просто хотите поздороваться, не стесняйтесь — я на расстоянии всего лишь сообщения. 💬 Вы можете связаться со мной по адресу [email protected].

🤝 Кстати, я думаю, у нас одинаковый интерес к разработке программного обеспечения — давайте подключимся к LinkedIn! 💻