python3 - <<'EOF' import itertools C=[[1,1,0,1],[1,1,1,0],[0,1,0,1],[1,0,1,0]] allm=list(itertools.product([0,1],repeat=4)) def det(A): A=[list(r) for r in A] n=len(A) for c in range(n): p=next((r for r in range(c,n) if A[r][c]),None) if p is None:return 0 A[c],A[p]=A[p],A[c] for r in range(c+1,n): if A[r][c]:A[r]=[x^y for x,y in zip(A[r],A[c])] return 1 for Q in itertools.product(allm,repeat=4): if not det(Q):continue if tuple(tuple(sum(Q[i][k]*Q[j][k] for k in range(4))%2 for j in range(4)) for i in range(4))!=tuple(tuple(r) for r in C):continue if [sum(Q[i][j] for i in range(4))%2 for j in range(4)]!=[1,1,1,1]:continue if [Q[i][0] for i in range(4)]!=[1,0,0,0]:continue print('Q',Q) R=[row[1:] for row in Q[1:]] print('R',R) print('r',[sum(row)%2 for row in R]) print('s',[sum(R[i][j] for i in range(3))%2 for j in range(3)]) break else:print('none') EOF