The matrix has U
JavaScript (ES7), 124 110 105 bytes
Returns a Boolean value.
m=>m.some((r,y)=>r.some((v,x)=>(g=n=>n--?v==(m[y+~-(n/5)]||0)[x+n%5-1]^144140166590/3**n%3&&g(n):1)(24)))
Try it online!
How?
For each reference cell of value \$v\$ at \$(x,y)\$ in the input matrix \$m\$, we test 24 neighbor cells.
The constant \$144140166590\$ is \$111210001101011010121112_3\$ in base 3. By reversing the digits and rearranging them into a 5x5 matrix, this gives:
$$\begin{pmatrix}2&1&1&1&2\\ 1&\color{red}0&1&0&1\\ 1&0&1&0&1\\ 1&0&0&0&1\\ 2&1&1&1&-\end{pmatrix}$$
where:
- the cell in red is the reference cell
- \$0\$ means that this cell must be equal to \$v\$
- \$1\$ means that this cell must be different from \$v\$
- \$2\$ means that we don't care
The bottom-right cell of the matrix is ignored, but it should be a \$2\$ anyway (for we don't care).
The \$n\$-th cell to test (0-indexed) is the cell whose coordinates are:
$$\big(x+(n\bmod 5)-1,y+\lfloor n/5\rfloor-1\big)$$
The corresponding value in the above matrix is given by:
$$V=\left\lfloor\frac{144140166590}{3^n}\right\rfloor\bmod 3$$
We do a bitwise XOR between the cell comparison test and \$V\$:
is equal | V | XOR | success?
----------+-----+-----+--------------------------
0 | 0 | 0 | no (should be equal)
1 | 0 | 1 | yes
----------+-----+-----+--------------------------
0 | 1 | 1 | yes
1 | 1 | 0 | no (should be different)
----------+-----+-----+--------------------------
0 | 2 | 2 | yes \__ always
1 | 2 | 3 | yes / ≠ 0
If all 24 tests are successful, we've found a valid U
.
Julia 0.6, 78 75 bytes
x->any(n->7∈conv2(reshape(digits(287035908958,3)-1,5,5),1÷-~abs(x-n)),x)
Try it online!
Uses 2D-convolution to find the pattern encoded in the magic constant. The constant is derived via base 3 digits similarly to Arnauld's answer, but with 0 and 2 swapped. This way, after subtracting 1, we get the following correspondence: N = 1, '+' = 0, '-' = -1
.
The input matrix is transformed to N = 1, everything else = 0
. After convolution, the middle cell of the found pattern will accumulate a total of 7 (for the number of N's in the U-shape). If any of required N's is missing, the sum will not reach 7, and if an N (= 1) is present in the forbidden position, it will gain a negative contribution due to the multiplication by -1 in the pattern.
APL (Dyalog Extended), 62 51 45 bytes (SBCS)
-6 based on fireflame241's solution.
⍲,(⍱{'GILNQRS'≡⎕A[⍸,⍵]~'AEUY'}⌺5 5⍤=)¨∘⊂0⍪0,⊢
Try it online!