fork download
  1. from itertools import combinations
  2.  
  3. def is_subset_sum(list_input):
  4. pos = []
  5.  
  6. for i in range(2, len(list_input) +1):
  7. n = [list(x) for x in combinations(list_input, i)]
  8. pos.append(n)
  9.  
  10. for combi in pos:
  11. for i in combi:
  12. res = 0
  13. for x in i:
  14. if x == 0:
  15. return True
  16. else:
  17. res += x
  18. if res == 0:
  19. return True
  20. return False
  21.  
  22. print(is_subset_sum([1, 2, 3]))
  23. print(is_subset_sum([-5, -3, -1, 2, 4, 6]))
  24. print(is_subset_sum([]))
  25. print(is_subset_sum([-1, 1]))
  26. print(is_subset_sum([-97364, -71561, -69336, 19675, 71561, 97863]))
  27. print(is_subset_sum([-53974, -39140, -36561, -23935, -15680, 0]))
  28. print('--------')
  29. print(is_subset_sum([-83314, -82838, -80120, -63468, -62478, -59378, -56958, -50061, -34791, -32264, -21928, -14988, 23767, 24417, 26403, 26511, 36399, 78055]))
  30. print(is_subset_sum([-92953, -91613, -89733, -50673, -16067, -9172, 8852, 30883, 46690, 46968, 56772, 58703, 59150, 78476, 84413, 90106, 94777, 95148]))
  31. print(is_subset_sum([-94624, -86776, -85833, -80822, -71902, -54562, -38638, -26483, -20207, -1290, 12414, 12627, 19509, 30894, 32505, 46825, 50321, 69294]))
  32. print(is_subset_sum([-83964, -81834, -78386, -70497, -69357, -61867, -49127, -47916, -38361, -35772, -29803, -15343, 6918, 19662, 44614, 66049, 93789, 95405]))
  33. print(is_subset_sum([-68808, -58968, -45958, -36013, -32810, -28726, -13488, 3986, 26342, 29245, 30686, 47966, 58352, 68610, 74533, 77939, 80520, 87195]))
  34. print('-------')
  35. print(is_subset_sum([-97162, -95761, -94672, -87254, -57207, -22163, -20207, -1753, 11646, 13652, 14572, 30580, 52502, 64282, 74896, 83730, 89889, 92200]))
  36. print(is_subset_sum([-93976, -93807, -64604, -59939, -44394, -36454, -34635, -16483, 267, 3245, 8031, 10622, 44815, 46829, 61689, 65756, 69220, 70121]))
  37. print(is_subset_sum([-92474, -61685, -55348, -42019, -35902, -7815, -5579, 4490, 14778, 19399, 34202, 46624, 55800, 57719, 60260, 71511, 75665, 82754]))
  38. print(is_subset_sum([-85029, -84549, -82646, -80493, -73373, -57478, -56711, -42456, -38923, -29277, -3685, -3164, 26863, 29890, 37187, 46607, 69300, 84808]))
  39. print(is_subset_sum([-87565, -71009, -49312, -47554, -27197, 905, 2839, 8657, 14622, 32217, 35567, 38470, 46885, 59236, 64704, 82944, 86902, 90487]))
Success #stdin #stdout 1.84s 59408KB
stdin
Standard input is empty
stdout
False
True
False
True
True
True
--------
False
False
False
False
False
-------
True
True
True
True
True