Skip to main content
We’ve updated our Terms of Service. A new AI Addendum clarifies how Stack Overflow utilizes AI interactions.
Code Golf

Return to Answer

added a commented version
Source Link
Arnauld
  • 205.5k
  • 21
  • 187
  • 670

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)))

Try it online!

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)))

Try it online!

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)))

Try it online!

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()
saved 2 bytes
Source Link
Arnauld
  • 205.5k
  • 21
  • 187
  • 670

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)))

Try it online! Try it online!

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)))

Try it online!

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)))

Try it online!

saved 1 byte
Source Link
Arnauld
  • 205.5k
  • 21
  • 187
  • 670

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)))

Try it online! Try it online!

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)))

Try it online!

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)))

Try it online!

saved 36 bytes
Source Link
Arnauld
  • 205.5k
  • 21
  • 187
  • 670
Loading
Source Link
Arnauld
  • 205.5k
  • 21
  • 187
  • 670
Loading

AltStyle によって変換されたページ (->オリジナル) /