fork download
  1. from itertools import combinations
  2.  
  3. def subset(numbers):
  4. for i in range(len(numbers)):
  5. combos = list(combinations(numbers , i))
  6. combos = convert_tuple(combos)
  7. for i in combos:
  8. chkzro = sum(i)
  9. if chkzro == 0 and len(i) > 1:
  10. print(i , "is a 0 sum subset")
  11. return True
  12. break
  13. else:
  14. continue
  15. break
  16.  
  17.  
  18. def convert_tuple(tup):
  19. if type(tup) == list or type(tup) == tuple:
  20. return [convert_tuple(i) for i in tup]
  21. return tup
  22.  
  23.  
  24. numbers = [[-97162, -95761, -94672, -87254, -57207, -22163, -20207, -1753, 11646, 13652, 14572, 30580, 52502, 64282, 74896, 83730, 89889, 92200] ,
  25. [-93976, -93807, -64604, -59939, -44394, -36454, -34635, -16483, 267, 3245, 8031, 10622, 44815, 46829, 61689, 65756, 69220, 70121] ,
  26. [-83964, -81834, -78386, -70497, -69357, -61867, -49127, -47916, -38361, -35772, -29803, -15343, 6918, 19662, 44614, 66049, 93789, 95405] ,
  27. [-94624, -86776, -85833, -80822, -71902, -54562, -38638, -26483, -20207, -1290, 12414, 12627, 19509, 30894, 32505, 46825, 50321, 69294]]
  28.  
  29. for i in numbers:
  30. subset(i)
  31. if not subset(i):
  32. print("None found in" , i)
Success #stdin #stdout 4.51s 30576KB
stdin
Standard input is empty
stdout
[-97162, -95761, -22163, 14572, 52502, 64282, 83730] is a 0 sum subset
[-97162, -95761, -22163, 14572, 52502, 64282, 83730] is a 0 sum subset
[-93807, -64604, -59939, -44394, -36454, 267, 10622, 44815, 46829, 61689, 65756, 69220] is a 0 sum subset
[-93807, -64604, -59939, -44394, -36454, 267, 10622, 44815, 46829, 61689, 65756, 69220] is a 0 sum subset
None found in [-83964, -81834, -78386, -70497, -69357, -61867, -49127, -47916, -38361, -35772, -29803, -15343, 6918, 19662, 44614, 66049, 93789, 95405]
None found in [-94624, -86776, -85833, -80822, -71902, -54562, -38638, -26483, -20207, -1290, 12414, 12627, 19509, 30894, 32505, 46825, 50321, 69294]