Trouver toutes les combinaisons d'une liste de nombres avec une somme donnée

J'ai une liste de nombres, par exemple

numbers = [1, 2, 3, 7, 7, 9, 10]

Comme vous pouvez le voir, les chiffres peuvent apparaître plus d'une fois dans cette liste.

J'ai besoin d'obtenir toutes les combinaisons de ces numéros qui ont une somme donnée, par exemple 10.

Les éléments dans les combinaisons ne peuvent pas être répétées, mais chaque élément dans numbers doit être traitée de façon unique, ce qui signifie, par exemple les deux 7 dans la liste représentent les différents éléments avec la même valeur.

L'ordre est sans importance, de sorte que [1, 9] et [9, 1] sont de la même combinaison.

Il n'y a aucune restriction de longueur pour les combinaisons, [10] est aussi valide que [1, 2, 7].

Comment puis-je créer une liste de toutes les combinaisons répondant aux critères ci-dessus?

Dans cet exemple, il serait [[1,2,7], [1,2,7], [1,9], [3,7], [3,7], [10]]

OriginalL'auteur Byte Commander | 2015-12-29