ম্যাথমেটিকা, 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]&
: খাঁটি ফাংশন যা ওভারল্যাপ সহ #
দৈর্ঘ্যের সাবলিস্টগুলিতে তালিকাটি ভাগ করে ; যেমন, সংলগ্ন জোড়গুলির তালিকা ।2
1
#
##&@@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
অ্যারে হিসাবে পুনরায় আকার দিন ।