# 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!