JavaScript (ES6), 60 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some(p=>m.some(q=>p!=q&&p.reduce((t,v,x)=>t+v*q[x],0)))
Commented
m => // m[] = input matrix
m.some(p => // for each row p[] in m[]:
m.some(q => // for each row q[] in m[]:
p != q && // test whether p[] is not equal to q[]
// (comparison of pointers)
p.reduce( // for each value v at position x in p[],
(t, v, x) => // using t as the accumulator:
t + v * q[x], // add v * q[x] to the accumulator,
// which gives 1 if v = q[x] or -1 otherwise
0 // start with t = 0
) // end of reduce() -> gives 0 if and only if
// exactly half of the values are matching
) // end of inner some()
) // end of outer some()
JavaScript (ES6), 60 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some(p=>m.some(q=>p!=q&&p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 60 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some(p=>m.some(q=>p!=q&&p.reduce((t,v,x)=>t+v*q[x],0)))
Commented
m => // m[] = input matrix
m.some(p => // for each row p[] in m[]:
m.some(q => // for each row q[] in m[]:
p != q && // test whether p[] is not equal to q[]
// (comparison of pointers)
p.reduce( // for each value v at position x in p[],
(t, v, x) => // using t as the accumulator:
t + v * q[x], // add v * q[x] to the accumulator,
// which gives 1 if v = q[x] or -1 otherwise
0 // start with t = 0
) // end of reduce() -> gives 0 if and only if
// exactly half of the values are matching
) // end of inner some()
) // end of outer some()
JavaScript (ES6), 6260 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some((p,i)=>mp=>m.some(q=>i--*pq=>p!=q&&p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 62 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some((p,i)=>m.some(q=>i--*p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 60 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some(p=>m.some(q=>p!=q&&p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 6362 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some((p,i)=>m.some(q=>i--&&p*p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 63 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some((p,i)=>m.some(q=>i--&&p.reduce((t,v,x)=>t+v*q[x],0)))
JavaScript (ES6), 62 bytes
Returns false for Hadamard or true for non-Hadamard.
m=>m.some((p,i)=>m.some(q=>i--*p.reduce((t,v,x)=>t+v*q[x],0)))