Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import itertools
- 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] ]
- cols5 = [ [1,2,4,6], [1,3,4,6], [2,3,4,6], [1,2,3,6], [1,2,3,4] ]
- cols4 = [ [2,3,5,6], [1,2,3,6], [1,3,5,6], [1,2,3,6], [1,2,5,6] ]
- cols6 = [ [1,2,3,4], [1,2,4,5], [1,2,3,5], [2,3,4,5], [1,3,4,5] ]
- cols1 = [ [3,4,5,6], [2,3,4,5], [2,4,5,6], [2,3,4,5], [2,3,5,6] ]
- cols2 = [ [1,3,5,6], [3,4,5,6], [1,3,4,5], [1,4,5,6], [1,3,4,6] ]
- cols3 = [ [1,2,4,5], [1,2,5,6], [1,2,4,6], [1,4,5,6], [2,4,5,6] ]
- def main():
- i = 0
- resultset = []
- resultset1 = []
- resultset2 = []
- resultset3 = []
- resultset4 = []
- resultset5 = []
- resultset6 = []
- cols = []
- cols.append(cols5)
- cols.append(cols4)
- cols.append(cols6)
- cols.append(cols1)
- cols.append(cols2)
- cols.append(cols3)
- for col in cols:
- results = []
- for element in itertools.product(*col):
- result = uniq(element)
- if result != 0:
- results.append(result)
- for result in results:
- temp = []
- ret = inorder(result, i)
- if ret != 0:
- if matrix[0][i] == 1:
- temp.append(1)
- for r in result:
- temp.append(r)
- resultset1.append(temp)
- elif matrix[0][i] == 2:
- temp.append(2)
- for r in result:
- temp.append(r)
- resultset2.append(temp)
- elif matrix[0][i] == 3:
- temp.append(3)
- for r in result:
- temp.append(r)
- resultset3.append(temp)
- elif matrix[0][i] == 4:
- temp.append(4)
- for r in result:
- temp.append(r)
- resultset4.append(temp)
- elif matrix[0][i] == 5:
- temp.append(5)
- for r in result:
- temp.append(r)
- resultset5.append(temp)
- elif matrix[0][i] == 6:
- temp.append(6)
- for r in result:
- temp.append(r)
- resultset6.append(temp)
- else:
- print "Something went wrong"
- exit
- i = i + 1
- print resultset1
- print resultset2
- print resultset3
- print resultset4
- print resultset5
- print resultset6
- # find 5 lists that don't overlap anywhere
- # count = 0
- # for element in itertools.combinations(resultset, 6):
- # count = count + 1
- # if(checkrows(element) == 1):
- # print element
- #
- # print count
- checkrows(resultset1, resultset2, resultset3, resultset4, resultset5, resultset6)
- def checkrows(r1, r2, r3, r4, r5, r6):
- count = 0
- for a in r1:
- for b in r2:
- for c in r3:
- for d in r4:
- for e in r5:
- for f in r6:
- ret = checkval(a,b,c,d,e,f)
- if ret == 1:
- print a
- print b
- print c
- print d
- print e
- print f
- count = count + 1
- def checkval(a, b, c, d, e, f):
- for i in range(0, 6):
- temp = []
- temp.append(a[i])
- temp.append(b[i])
- temp.append(c[i])
- temp.append(d[i])
- temp.append(e[i])
- temp.append(f[i])
- ret = uniq2(temp)
- if ret == 0:
- return 0
- return 1
- def inorder(alist, start):
- templist = [start]
- for i in range(0,5):
- myindex = matrix[i+1].index(alist[i])
- if myindex in templist:
- return 0
- else:
- templist.append(myindex)
- return 1
- def uniq(alist):
- set = {}
- if(len([set.setdefault(e,e) for e in alist if e not in set]) == 5):
- return alist
- else:
- return 0
- def uniq2(alist):
- set = {}
- if(len([set.setdefault(e,e) for e in alist if e not in set]) == 6):
- return 1
- else:
- return 0
- main()
Add Comment
Please, Sign In to add comment