Используя фрагмент
import itertools
numbers = [1,2,3,4,5]
results = [7,8]
allcombs = [seq for i in range(len(numbers), 0, -1) for seq in itertools.combinations(numbers, i) if sum(seq) in results]
print(allcombs)
, я могу получить все комбинации, которые дают мне желаемый результат. Основная проблема здесь заключается в том, что число не должно повторяться. Таким образом, вместо результата
[(1, 2, 4), (1, 2, 5), (1, 3, 4), (2, 5), (3, 4), (3, 5)]
мне нужно получить
[(1, 2, 4),(3, 5)]
Все элементы результатов не должны содержаться в комбинации чисел.
Редактировать:
1 Решение
usednumbers = []
newresult = []
for comb in allcombs:
if not any(a in usednumbers for a in comb):
newresult.append(comb)
for n in comb:
usednumbers.append(n)
print(newresult)