Алгоритм выбора строки по его приоритету
Есть 10 человек и у каждого есть приоритет на получение конфет. У нас есть 10 конфет которые мы в зависимости от приоритета должны поделить.
Пользователь | приоритет | мест в кармане
user1 40% 2
user2 50% 3
user3 10% 2
user4 0% 2
user5 0% 1
user6 0% 2
user7 0% 3
user8 0% 4
user9 0% 1
user10 0% 2
- Первые 7 конфет распределяются между
user1, user2, user3так как у них приоритет > 0. Остальные - между остальными. - Остальные 3 конфеты случайно выпадают
user4-user10
Так как цифры небольшие, то можно ручками посчитать. Но хотелось бы привести это в алгоритм. Это не просто делёжка конфет. Розыгрыш.
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Алгоритм простой
- Создаем и заполняем map списков key =priority, value = list мест в кармане.
- Для каждого элемента map в порядке убывания priority. Раздать случайно конфеты (не имеет значения даже если всем достанется)
- Если конфеты остались повторят шаг 2
- вывести результат
Если приоритеты равны то случайно выбираете поскольку при одинаковых приоритетах
Автор решения: AlekseiGaile
→ Ссылка
Делаем объект с полями юзер, приоритет, мест в кармане. Заполняем список из этих объектов. Сортируем по приоритету, выдаем конфеты по условию приоритет > 0, выдаем остальным по рандому.