Advertisement
Guest User

Untitled

a guest
May 25th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.46 KB | None | 0 0
  1. def find_subsets(arr)
  2. subset = arr.slice(0..-2)
  3. tail = arr[-1]
  4. new_sets = []
  5. new_sets.push [tail]
  6.  
  7. if subset.size >= 2
  8. sets = find_subsets(subset)
  9. sets.each do |s|
  10. new_sets.push( [s, tail].flatten )
  11. end
  12. new_sets = new_sets.concat sets
  13. else
  14. new_sets.push subset
  15. new_sets.push [subset, tail].flatten
  16. end
  17.  
  18. return new_sets
  19.  
  20. end
  21.  
  22. def subset_sum(arr, sum)
  23. find_subsets(arr).select {|subset| subset.inject{|a,b| a+b} == sum }
  24. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement