それぞれが 0 ~ 10 の値のプロパティを含むアイテムの辞書を取得し、さまざまな要素を追加して、どのアイテムの組み合わせが目的の合計を達成するかを選択するスクリプトを作成しようとしています。同じ「スロット」を共有するアイテムのみを使用して、これを行うスクリプトも必要です。
例えば:
item_list = {
'item_1': {'slot': 'top', 'prop_a': 2, 'prop_b': 0, 'prop_c': 2, 'prop_d': 1 },
'item_2': {'slot': 'top', 'prop_a': 5, 'prop_b': 0, 'prop_c': 1, 'prop_d':-1 },
'item_3': {'slot': 'top', 'prop_a': 2, 'prop_b': 5, 'prop_c': 2, 'prop_d':-2 },
'item_4': {'slot': 'mid', 'prop_a': 5, 'prop_b': 5, 'prop_c':-5, 'prop_d': 0 },
'item_5': {'slot': 'mid', 'prop_a':10, 'prop_b': 0, 'prop_c':-5, 'prop_d': 0 },
'item_6': {'slot': 'mid', 'prop_a':-5, 'prop_b': 2, 'prop_c': 3, 'prop_d': 5 },
'item_7': {'slot': 'bot', 'prop_a': 1, 'prop_b': 3, 'prop_c':-4, 'prop_d': 4 },
'item_8': {'slot': 'bot', 'prop_a': 2, 'prop_b': 2, 'prop_c': 0, 'prop_d': 0 },
'item_9': {'slot': 'bot', 'prop_a': 3, 'prop_b': 1, 'prop_c': 4, 'prop_d':-4 },
}
次に、スクリプトは、「item_list」ディクテーションから、「スロット」ごとに 1 つのアイテムを使用して、追加したときに目的の結果が得られる組み合わせを選択する必要があります。
たとえば、必要な結果が 'prop_a': 3、'prop_b': 3、'prop_c': 8、'prop_d': 0 の場合、スクリプトは 'item_2'、'item_6'、および 'item_9' を選択します。機能した他の組み合わせと一緒に。
'item_2': {'slot': 'top', 'prop_a': 5, 'prop_b': 0, 'prop_c': 1, 'prop_d':-1 }
'item_6': {'slot': 'mid', 'prop_a':-5, 'prop_b': 2, 'prop_c': 3, 'prop_d': 5 }
'item_9': {'slot': 'bot', 'prop_a': 3, 'prop_b': 1, 'prop_c': 4, 'prop_d':-4 }
'total': 'prop_a': 3, 'prop_b': 3, 'prop_c': 8, 'prop_d': 0
これを達成する方法はありますか?Python や完全なスクリプトである必要はありませんが、理論的にこれを行う方法についての説明だけで十分です。すべての組み合わせをループしてみましたが、すぐに手に負えなくなり、手に負えなくなったようです。実際のスクリプトでは、それぞれ 8 つのプロパティを持つ 20 の異なる「スロット」を使用して、約 1,000 のアイテムに対してこれを行う必要があります。
助けてくれてありがとう!