Я создаю игру.Частью игры является сбор предметов.Вы получаете очки за «разнообразие», поэтому у каждого объекта в категории есть свойства.Если вы собрали объект с определенным свойством, множитель для этого свойства больше не применяется ни к одному из других объектов со свойством.Очки рассчитываются путем комбинирования всех уникальных значений для каждого собранного вами свойства, а затем умножения на коэффициент для этого свойства.Например:
Points
Category: Toys
Base: 2
Shape: 7
Material: 10
Color: 5
Bouncy ball: Snow Globe:
category: sphere category: sphere
shape: round shape: round
material: rubber material: glass
color: swirls color: clear
Collected:
bases = my_objects.length * base = 2 * 2 = 4
shapes = array('round').length * 7
materials = array('rubber', 'glass') * 10
color = array('swirls', 'red') * 5
score = bases + shapes + materials + color = 4 + 7 + 20 + 10 = 41
Объекты хранятся в виде документов nosql (mongodb).Мой вопрос заключается в том, каков наилучший способ выбрать все оставшиеся объекты из базы данных, в порядке того, какие несобранные объекты будут добавлять наибольшее количество очков к баллу пользователя.