Hi,

My first question is:
1. given a list of invoives I=[500, 400, 450, 200, 600, 700] and a
check Ch=600
how can I print all the different combinations of invoices that the
check is possibly cancelling


Incidentally, I'm currently learning python myself, and was working on more or less the same problem as an exercise;

For listing all different subsets of a list (This is what I came up with. Can it be implemented shorter, btw?):

def subsets(L):
        S = []
        if (len(L) == 1):
                return [L, []]
        else:
                for s in subsets(L[1:]):
                        S.append(s)
                        S.append(s + [ L[0]])
        return S

Now, to use the above piece of code (after 'import subset'):

>>> subset.subsets([4,7,8,2])
[[2], [2, 4], [2, 7], [2, 7, 4], [2, 8], [2, 8, 4], [2, 8, 7], [2, 8, 7, 4], [], [4], [7], [7, 4], [8], [8, 4], [8, 7], [8, 7, 4]]
>>> map(sum,subset.subsets([4,7,8,2]))
[2, 6, 9, 13, 10, 14, 17, 21, 0, 4, 7, 11, 8, 12, 15, 19]

It's not a real solution yet, and as others have pointed out the problem is NP complete but it might help to get you going.

cheers,
Ozz





--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to