En utilisant Python ou toute autre bibliothèque Python, comment trouver toutes les combinaisons possibles d'éléments dans une liste ? l
qui sont égales à une valeur donnée val
en utilisant ajout , soustraction ou multiplication ? Supposons que la longueur de la liste n'est pas toujours la même, que chaque élément de la liste ne peut être utilisé qu'une fois dans chaque combinaison et que les parenthèses ne sont pas utilisées.
Par exemple :
- On nous donne une liste de chiffres :
l = [1,2,3,4]
- On nous donne une valeur égale à la combinaison des valeurs :
val = 6
- Le résultat serait le suivant :
-
[2,4]
ya que2+4=6
- Et
[4,2]
ya que4+2=6
- Et
[1,3,2]
ya que1+3+2=6
- Et
[1,2,4]
ya que1*2+4=6
- etc.
-
J'ai essayé d'utiliser itertools.permutations :
>>> from itertools import permutations
>>> l = [1,2,3,4]
>>> val = 6
>>> correct_combos = []
>>> for i in range(1, len(l)+1):
... for p in permutations(l, r=i):
... if sum(p) == val:
... correct_combos.append(p)
Je suis en mesure d'implémenter uniquement le code permettant de tester la somme de toutes les combinaisons d'éléments de la liste.
>>> print(correct_combos)
[(2, 4), (4, 2)]
Je suis bloqué sur la recherche de permutations d'éléments dans la liste en utilisant une combinaison d'addition, de soustraction et de multiplication.