Toán học, 180 byte
(f=Flatten@#;p=Partition)[If[Tr[1^VertexComponent[r~Graph~Cases[##&@@p[#,2,1]&/@Join[g=p[r,5],g],{a_,b_}/;(A=f[[a]])==f[[b]]&&A!=" ":>a<->b],#]]<3,f[[#]],"x"]&/@(r=Range@25),5]&
Giải trình:
(f=Flatten@#;p=Partition)[
If[
Tr[1^VertexComponent[
r~Graph~Cases[
##&@@p[#,2,1]&/@Join[g=p[r,5],g],
{a_,b_}/;(A=f[[a]])==f[[b]]&&A!=" ":>a<->b
],
#
]]<3,
f[[#]],
"x"
]&/@(r=Range@25),
5
]&
Hàm thuần túy chấp nhận một 5x5mảng. là ký tự sử dụng riêng 3 byte U+F3C7đại diện cho toán tử chuyển đổi hậu tố \[Transpose].
(f=Flatten@#;p=Partition): Làm phẳng danh sách đầu vào và lưu nó vào f. Đặt p = Partitionvà trả lại nó.
g=p[r,5]: Mảng {{1,2,3,4,5}, ..., {21,22,23,24,25}}(điều này là do rđược đặt thành Range@25).
Join[g=p[r,5],g]: danh sách các hàng và cột của g.
p[#,2,1]&: Hàm thuần túy phân vùng danh sách #thành các danh sách con có độ dài 2chồng chéo 1; tức là danh sách các cặp liền kề trong #.
##&@@p[#,2,1]&: Tương tự như trên trừ nó trả về a Sequence.
##&@@p[#,2,1]&/@Join[g=p[r,5],g]: Bản đồ chức năng trước đó của các hàng và cột của gđể có được danh sách tất cả các mục liền kề trong g. Ruột của tôi nói rằng có một cách ngắn hơn để làm điều này.
r~Graph~Cases[...]: Đồ thị có các đỉnh là các số nguyên 1, ..., 25và các cạnh của nó là các cạnh giữa các mục liền kề gcó cùng các mục tương ứng trong mảng đầu vào (trừ " ")
{a_,b_}/;(A=f[[a]])==f[[b]]&&A!=" ": Mẫu phù hợp với {a,b}sao cho f[[a]] == f[[b]](cùng giá trị trong mảng đầu vào) và mẫu không bằng " ". Đặt A = f[[a]]để lưu 1byte.
...:>a<->b: Thay thế mọi trận đấu bằng một cạnh không xác định từ a đến b.
VertexComponent: Trả về thành phần được kết nối của đối số thứ hai (một đỉnh) trong đối số thứ nhất (biểu đồ).
Tr[1^VertexComponent[...]]: Kích thước của thành phần được kết nối. Lưu 1byte từ Length@VertexComponent[...].
If[Tr[...]<3,f[[#]],"x"]&: Hàm thuần túy có một mục #trong g. Nếu kích thước của thành phần được kết nối của nó nhỏ hơn 3, thay thế nó bằng mục tương ứng trong đầu vào. Nếu không, thay thế nó bằng "x".
(f=Flatten@#;p=Partition)[...,5]: Và cuối cùng định hình lại kết quả thành một 5x5mảng.