ম্যাথমেটিকা, 180 বাইট
(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]&
ব্যাখ্যা:
(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
]&
খাঁটি ফাংশন যা একটি 5x5অ্যারে গ্রহণ করে । পোস্টফিক্স ট্রান্সপোজ অপারেটরের প্রতিনিধিত্বকারী 3-বাইট প্রাইভেট-ব্যবহারের চরিত্র ।U+F3C7\[Transpose]
(f=Flatten@#;p=Partition): ইনপুট তালিকাটি ফ্ল্যাট করে এবং এতে সঞ্চয় করে f। সেট করে p = Partitionএটি ফেরত দেয়।
g=p[r,5]: অ্যারে {{1,2,3,4,5}, ..., {21,22,23,24,25}}(এটি rসেট হয়ে যায় বলে Range@25)।
Join[g=p[r,5],g]: সারি এবং কলামগুলির তালিকা g।
p[#,2,1]&: খাঁটি ফাংশন যা ওভারল্যাপ সহ #দৈর্ঘ্যের সাবলিস্টগুলিতে তালিকাটি ভাগ করে ; যেমন, সংলগ্ন জোড়গুলির তালিকা ।21#
##&@@p[#,2,1]&: উপরের মত একই হিসাবে এটি প্রদান করে a Sequence।
##&@@p[#,2,1]&/@Join[g=p[r,5],g]: মানচিত্র সারি এবং কলাম-এর পূর্ববর্তী ফাংশন gমধ্যে সংলগ্ন এন্ট্রির সব একটি তালিকা প্রাপ্ত করার g। আমার অন্ত্রে বলছে এটি করার একটি ছোট উপায় আছে।
r~Graph~Cases[...]: গ্রাফ যার শীর্ষস্থানগুলি পূর্ণসংখ্যা 1, ..., 25এবং যার প্রান্তগুলি সংলগ্ন প্রবেশের মধ্যবর্তী প্রান্তগুলি gযেখানে ইনপুট অ্যারেতে একই সংযুক্ত এন্ট্রি রয়েছে (ব্যতীত " ")
{a_,b_}/;(A=f[[a]])==f[[b]]&&A!=" ": প্যাটার্ন যা মিলে যায় {a,b}যেমন যে f[[a]] == f[[b]](ইনপুট অ্যারের মধ্যে একই মান) এবং যা সমান নয় " "। বাইট A = f[[a]]সংরক্ষণ করতে সেট করুন 1।
...:>a<->b: প্রতিটি ম্যাচকে অপরিবর্তিত প্রান্ত থেকে a থেকে b এ প্রতিস্থাপন করুন।
VertexComponent: প্রথম আর্গুমেন্টে (একটি গ্রাফ) দ্বিতীয় আর্গুমেন্টের একটি সংযুক্ত উপাদানটি (একটি গ্রাফ) প্রদান করে।
Tr[1^VertexComponent[...]]: সংযুক্ত উপাদানটির আকার। 1থেকে বাইট সংরক্ষণ করে Length@VertexComponent[...]।
If[Tr[...]<3,f[[#]],"x"]&: বিশুদ্ধ ফাংশন যা একটি এন্ট্রি লাগে #মধ্যে g। যদি এর সাথে সংযুক্ত উপাদানটির আকার কম 3হয় তবে এটি ইনপুটটিতে সংশ্লিষ্ট এন্ট্রি দিয়ে প্রতিস্থাপন করুন। অন্যথায়, এটি দিয়ে প্রতিস্থাপন করুন "x"।
(f=Flatten@#;p=Partition)[...,5]: এবং পরিশেষে ফলাফলটিকে একটি 5x5অ্যারে হিসাবে পুনরায় আকার দিন ।