import numpy as np
import numpy.linalg as alg

def norm(A):
    B=np.dot(A,np.transpose(A))
    return np.trace(B)

print([[x,y] for x in [0,1] for y in [0,1]])

S=[-1,1]
L=[[x,y,z,t] for x in S for y in S for z in S for t in S]
K=[np.array([x,y,z,t]) for x in L for y in L for z in L for t in L]

I=np.eye(4)
H=[]
for A in K:
    if norm(np.dot(A,np.transpose(A))-4*I)==0:
        H.append(A)
print('cardinal de H4=',len(H))

HS=[]
for A in H:
    if norm(A-np.transpose(A))==0:
        HS.append(A)
print('cardinal de SH4=',len(HS))
print('traces:',[np.trace(x) for x in HS])


