1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from pprint import pprint 

numbers = [9,8,15,10,14,17,11]
result_sets = []


numbers.sort()
for i, num in enumerate(numbers):
    result_set = [num]
    for n in numbers[i + 1:]:
        if sum(result_set) + n <= 30:
            result_set.append(n)
        print n, result_set, sum(result_set) + n
    if sum(result_set) == 30:
        print sum(result_set)
        result_sets.append(result_set)
        
pprint(result_sets, indent=2)