#JavaScript (ES6), 37 bytes
JavaScript (ES6), 37 bytes
Returns false for Noah or true for non-Noah.
a=>a.some(v=>a.map(x=>t-=v==x,t=2)|t)
###Commented
Commented
a => // a[] = input
a.some(v => // for each value v in a[]:
a.map(x => // for each value x in a[]:
t -= v == x, // decrement t if v is equal to x
// (i.e. if v appears exactly twice, t is decremented twice)
t = 2 // start with t = 2
) // end of map()
| t // yield t, which is supposed to be equal to 0
) // end of some()