Advertisement
Guest User

Permutations + brute force

a guest
Apr 30th, 2012
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.09 KB | None | 0 0
  1. #http://stackoverflow.com/questions/10388060/solving-puzzle-in-python
  2. import itertools as it
  3.  
  4. weight = 40
  5. full = range(1,41)
  6. comb = [x for x in it.combinations(full,4) if sum(x)==40]
  7.  
  8. for perm in comb:
  9.     list = []
  10.     list.append(perm[0] + perm[1] + perm[2] + perm[3])
  11.     list.append(perm[0] + perm[1] + perm[2] - perm[3])
  12.     list.append(perm[0] + perm[1] - perm[2] + perm[3])
  13.     list.append(perm[0] + perm[1] - perm[2] - perm[3])
  14.     list.append(perm[0] - perm[1] + perm[2] + perm[3])
  15.     list.append(perm[0] - perm[1] + perm[2] - perm[3])
  16.     list.append(perm[0] - perm[1] - perm[2] + perm[3])
  17.     list.append(perm[0] - perm[1] - perm[2] - perm[3])
  18.     list.append(- perm[0] + perm[1] + perm[2] + perm[3])
  19.     list.append(- perm[0] + perm[1] + perm[2] - perm[3])
  20.     list.append(- perm[0] + perm[1] - perm[2] + perm[3])
  21.     list.append(- perm[0] + perm[1] - perm[2] - perm[3])
  22.     list.append(- perm[0] - perm[1] + perm[2] + perm[3])
  23.     list.append(- perm[0] - perm[1] + perm[2] - perm[3])
  24.     list.append(- perm[0] - perm[1] - perm[2] + perm[3])
  25.     list.append(- perm[0] - perm[1] - perm[2] - perm[3])
  26.     #take out 3s
  27.     list.append(perm[0] + perm[1] + perm[2])
  28.     list.append(perm[0] + perm[1] - perm[2])
  29.     list.append(perm[0] - perm[1] + perm[2])
  30.     list.append(perm[0] - perm[1] - perm[2])
  31.     list.append(- perm[0] + perm[1] + perm[2])
  32.     list.append(- perm[0] + perm[1] - perm[2])
  33.     list.append(- perm[0] - perm[1] + perm[2])
  34.     list.append(- perm[0] - perm[1] - perm[2])
  35.     # take out 2s
  36.     list.append(perm[0] + perm[1] + perm[3])
  37.     list.append(perm[0] + perm[1] - perm[3])
  38.     list.append(perm[0] - perm[1] + perm[3])
  39.     list.append(perm[0] - perm[1] - perm[3])
  40.     list.append(- perm[0] + perm[1] + perm[3])
  41.     list.append(- perm[0] + perm[1] - perm[3])
  42.     list.append(- perm[0] - perm[1] + perm[3])
  43.     list.append(- perm[0] - perm[1] - perm[3])
  44.     # take out 1s
  45.     list.append(perm[0] + perm[2] + perm[3])
  46.     list.append(perm[0] + perm[2] - perm[3])
  47.     list.append(perm[0] - perm[2] + perm[3])
  48.     list.append(perm[0] - perm[2] - perm[3])
  49.     list.append(- perm[0] + perm[2] + perm[3])
  50.     list.append(- perm[0] + perm[2] - perm[3])
  51.     list.append(- perm[0] - perm[2] + perm[3])
  52.     list.append(- perm[0] - perm[2] - perm[3])
  53.     # take out 0s
  54.     list.append(perm[1] + perm[2] + perm[3])
  55.     list.append(perm[1] + perm[2] - perm[3])
  56.     list.append(perm[1] - perm[2] + perm[3])
  57.     list.append(perm[1] - perm[2] - perm[3])
  58.     list.append(- perm[1] + perm[2] + perm[3])
  59.     list.append(- perm[1] + perm[2] - perm[3])
  60.     list.append(- perm[1] - perm[2] + perm[3])
  61.     list.append(- perm[1] - perm[2] - perm[3])
  62.     # take out 3, 2
  63.     list.append(perm[0] + perm[1])
  64.     list.append(perm[0] - perm[1])
  65.     list.append(- perm[0] + perm[1])
  66.     list.append(- perm[0] - perm[1])
  67.     # take out 3, 1
  68.     list.append(perm[0] + perm[2])
  69.     list.append(perm[0] - perm[2])
  70.     list.append(- perm[0] + perm[2])
  71.     list.append(- perm[0] - perm[2])
  72.     # take out 3, 0
  73.     list.append(perm[1] + perm[2])
  74.     list.append(perm[1] - perm[2])
  75.     list.append(- perm[1] + perm[2])
  76.     list.append(- perm[1] - perm[2])
  77.     # take out 2, 1
  78.     list.append(perm[0] + perm[3])
  79.     list.append(perm[0] - perm[3])
  80.     list.append(- perm[0] + perm[3])
  81.     list.append(- perm[0] - perm[3])
  82.     # take out 2, 0
  83.     list.append(perm[1] + perm[3])
  84.     list.append(perm[1] - perm[3])
  85.     list.append(- perm[1] + perm[3])
  86.     list.append(- perm[1] - perm[3])
  87.     list.append(perm[1] + perm[3])
  88.     list.append(perm[1] - perm[3])
  89.     list.append(- perm[1] + perm[3])
  90.     list.append(- perm[1] - perm[3])
  91.     # take out 1, 0
  92.     list.append(perm[2] + perm[3])
  93.     list.append(perm[2] - perm[3])
  94.     list.append(- perm[2] + perm[3])
  95.     list.append(- perm[2] - perm[3])
  96.     # only 0 or 1 or 2, or 3
  97.     list.append(perm[0])
  98.     list.append(perm[1])
  99.     list.append(perm[2])
  100.     list.append(perm[3])
  101.    
  102.     list_good = True
  103.     for x in range(1, 41):
  104.         if x not in list:
  105.             list_good = False
  106.     if list_good:        
  107.         print list, perm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement