Skip to content

Instantly share code, notes, and snippets.

@mprymek
Created January 6, 2016 10:44
Show Gist options
  • Save mprymek/7e288abb7dcaedc6d600 to your computer and use it in GitHub Desktop.
Save mprymek/7e288abb7dcaedc6d600 to your computer and use it in GitHub Desktop.
# Pop item at index i from list. Returns (item,new_list)
def pop2(l,i):
l1 = l[0:i]
l2 = l[(i+1):]
return (l[i],l1+l2)
def solve(numbers,goal):
solutions = []
for i in range(len(numbers)):
(num,numbers2) = pop2(numbers,i)
diff = goal - num
if diff==0:
solutions.append([num])
elif diff>0:
for sol in solve(numbers2,diff):
solutions.append([num]+sol)
# diff<0 -> CUT SUBTREE
return solutions
numbers = [1, 2, 3, 7]
goal = 10
result = solve(numbers,goal)
print result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment