Guest User

Untitled

a guest
May 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.82 KB | None | 0 0
  1. import itertools
  2.  
  3. matrix = [ [5,4,6,1,2,3], [3,1,5,2,4,6], [2,5,3,6,1,4], [1,2,4,3,6,5], [4,5,1,6,3,2], [6,3,2,4,5,1] ]
  4. cols5 = [ [1,2,4,6], [1,3,4,6], [2,3,4,6], [1,2,3,6], [1,2,3,4] ]
  5. cols4 = [ [2,3,5,6], [1,2,3,6], [1,3,5,6], [1,2,3,6], [1,2,5,6] ]
  6. cols6 = [ [1,2,3,4], [1,2,4,5], [1,2,3,5], [2,3,4,5], [1,3,4,5] ]
  7. cols1 = [ [3,4,5,6], [2,3,4,5], [2,4,5,6], [2,3,4,5], [2,3,5,6] ]
  8. cols2 = [ [1,3,5,6], [3,4,5,6], [1,3,4,5], [1,4,5,6], [1,3,4,6] ]
  9. cols3 = [ [1,2,4,5], [1,2,5,6], [1,2,4,6], [1,4,5,6], [2,4,5,6] ]
  10.  
  11. def main():
  12.         i = 0
  13.         resultset = []
  14.         resultset1 = []
  15.         resultset2 = []
  16.         resultset3 = []
  17.         resultset4 = []
  18.         resultset5 = []
  19.         resultset6 = []
  20.  
  21.         cols = []
  22.         cols.append(cols5)
  23.         cols.append(cols4)
  24.         cols.append(cols6)
  25.         cols.append(cols1)
  26.         cols.append(cols2)
  27.         cols.append(cols3)
  28.  
  29.         for col in cols:
  30.                 results = []
  31.                 for element in itertools.product(*col):
  32.                         result = uniq(element)
  33.                         if result != 0:
  34.                                 results.append(result)
  35.  
  36.  
  37.                 for result in results:
  38.                         temp = []
  39.                         ret = inorder(result, i)
  40.                         if ret != 0:
  41.                                 if matrix[0][i] == 1:
  42.                                         temp.append(1)
  43.                                         for r in result:
  44.                                                 temp.append(r)
  45.                                         resultset1.append(temp)
  46.                                 elif matrix[0][i] == 2:
  47.                                         temp.append(2)
  48.                                         for r in result:
  49.                                                 temp.append(r)
  50.                                         resultset2.append(temp)
  51.                                 elif matrix[0][i] == 3:
  52.                                         temp.append(3)
  53.                                         for r in result:
  54.                                                 temp.append(r)
  55.                                         resultset3.append(temp)
  56.                                 elif matrix[0][i] == 4:
  57.                                         temp.append(4)
  58.                                         for r in result:
  59.                                                 temp.append(r)
  60.                                         resultset4.append(temp)
  61.                                 elif matrix[0][i] == 5:
  62.                                         temp.append(5)
  63.                                         for r in result:
  64.                                                 temp.append(r)
  65.                                         resultset5.append(temp)
  66.                                 elif matrix[0][i] == 6:
  67.                                         temp.append(6)
  68.                                         for r in result:
  69.                                                 temp.append(r)
  70.                                         resultset6.append(temp)
  71.                                 else:
  72.                                         print "Something went wrong"
  73.                                         exit
  74.  
  75.                 i = i + 1
  76.  
  77.  
  78.  
  79.         print resultset1
  80.         print resultset2
  81.         print resultset3
  82.         print resultset4
  83.         print resultset5
  84.         print resultset6
  85.         # find 5 lists that don't overlap anywhere
  86.  
  87. #       count = 0
  88. #       for element in itertools.combinations(resultset, 6):
  89. #               count = count + 1
  90. #               if(checkrows(element) == 1):
  91. #                       print element
  92. #
  93. #       print count
  94.  
  95.         checkrows(resultset1, resultset2, resultset3, resultset4, resultset5, resultset6)
  96.  
  97.  
  98. def checkrows(r1, r2, r3, r4, r5, r6):
  99.         count = 0
  100.         for a in r1:
  101.                 for b in r2:
  102.                         for c in r3:
  103.                                 for d in r4:
  104.                                         for e in r5:
  105.                                                 for f in r6:
  106.                                                         ret = checkval(a,b,c,d,e,f)
  107.                                                         if ret == 1:
  108.                                                                 print a
  109.                                                                 print b
  110.                                                                 print c
  111.                                                                 print d
  112.                                                                 print e
  113.                                                                 print f
  114.                                                         count = count + 1
  115.  
  116.  
  117. def checkval(a, b, c, d, e, f):
  118.         for i in range(0, 6):
  119.                 temp = []
  120.  
  121.                 temp.append(a[i])
  122.                 temp.append(b[i])
  123.                 temp.append(c[i])
  124.                 temp.append(d[i])
  125.                 temp.append(e[i])
  126.                 temp.append(f[i])
  127.  
  128.                 ret = uniq2(temp)
  129.                 if ret == 0:
  130.                         return 0
  131.  
  132.         return 1
  133.  
  134. def inorder(alist, start):
  135.         templist = [start]
  136.         for i in range(0,5):
  137.                 myindex = matrix[i+1].index(alist[i])
  138.                 if myindex in templist:
  139.                         return 0
  140.                 else:
  141.                         templist.append(myindex)
  142.  
  143.         return 1
  144.  
  145.  
  146. def uniq(alist):
  147.         set = {}
  148.         if(len([set.setdefault(e,e) for e in alist if e not in set]) == 5):
  149.                 return alist
  150.         else:
  151.                 return 0
  152.  
  153. def uniq2(alist):
  154.         set = {}
  155.         if(len([set.setdefault(e,e) for e in alist if e not in set]) == 6):
  156.                 return 1
  157.         else:
  158.                 return 0
  159.  
  160. main()
Add Comment
Please, Sign In to add comment