-23 বাইট @ ডুরকনবকে ধন্যবাদ জানায়।
ব্যাকট্র্যাকিংয়ের জন্য অ্যাকাউন্টিং +42 বাইট।
p[m_]:=StringPartition[#,m]&;l=Range@8;f[n_]:=Check[w=(8#2+#1-8)&@@@({LetterNumber@#,FromDigits@#2}&@@@(p@1/@p[UpTo@2]@n));g=Graph[Sort/@UndirectedEdge@@@Position[Outer[EuclideanDistance@##&,#,#,1],N@Sqrt@2]&@GraphEmbedding@GridGraph@{8,8}//Union]~VertexDelete~w;c:=#~Complement~w&;m=0;Do[m+=Length@FindPath[g,i,j],{i,c@l},{j,c[l+56]}];m==0,0>1]
এটি অনলাইন চেষ্টা করুন!
আমি এগুলির বেশিরভাগটিকে ব্যাকট্র্যাকিংয়ের জন্য অ্যাকাউন্টে পুনরায় লিখেছিলাম, আমি মনে করি গ্রাফটি সংজ্ঞায়নের জন্য আরও সহজ উপায় হতে পারে g
, ম্যাথমেটিকায় রয়েছে GraphData[{"bishop",{8,8}}]
একটি বিশপ একটি দাবাবোর্ডে ( বিশপ গ্রাফ ) যে সমস্ত চালচলন করতে পারে তার গ্রাফ , তবে এই গ্রাফটিতে আরও সংযোগ রয়েছে নিকটতম তির্যক প্রতিবেশী চেয়ে। যদি কেউ এটির জন্য একটি ছোট উপায় জানেন তবে আমাকে জানান। গ্রাফ নির্মাণ জন্য ক্রেডিট যায় এই MathematicaSE উত্তর ।
True
শক্তিশালী পাসওয়ার্ডগুলির False
জন্য, দুর্বল / দুর্বল-গঠিত পাসওয়ার্ডগুলির জন্য ফেরত দেয় । মনে রাখবেন যে বেশিরভাগ দূষিত পাসওয়ার্ডগুলির জন্য এটি একগুচ্ছ ত্রুটি বার্তা উত্পন্ন করবে এবং তারপরে ফিরে আসবে False
। এটি যদি নিয়মগুলির সাথে সঙ্গতিপূর্ণ না হয় তবে তারা 6 বাইটের দামে পরিবর্তন f[n_]:=...
করে দমন করা যায় f[n_]:=Quiet@...
।
Ungolfed:
p[m_] := StringPartition[#, m] &;
f[n_] :=
Check[
w = (8 #2 + #1 -
8) & @@@ ({LetterNumber@#, FromDigits@#2} & @@@ (p@1 /@
p[UpTo@2]@n));
r = GridGraph[{8, 8}];
g = Graph[Sort /@ UndirectedEdge @@@
Position[Outer[EuclideanDistance@## &, #, #, 1],N@Sqrt@2] &@
GraphEmbedding@r // Union]~VertexDelete~w;
s = Complement[{1,2,3,4,5,6,7,8},w];
e = Complement[{57,58,59,60,61,62,63,64},w];
m = 0;
Do[m += Length@FindPath[g, i, j], {i, s}, {j, e}];
If[m == 0,True,False]
, False]
ভাঙ্গন:
p[m_]:=StringPartition[#,m]&
একটি স্ট্রিং আর্গুমেন্ট নেয় এবং এটিকে প্রতিটি দৈর্ঘ্যের স্ট্রিংয়ের তালিকায় বিভক্ত করে m
।
Check[...,False]
রিটার্নস False
কোন ত্রুটি বার্তা উত্পাদিত হয় যদি, যা আমরা কীভাবে অসুস্থ গঠিত স্ট্রিং (অর্থাত অনুমান তারা সুগঠিত হয়, অবশ্যম্ভাবীরূপে লাইন নিচে একটি ত্রুটি উত্পাদক) ধরা।
(8*#2 + #1 - 8) & @@@ ({LetterNumber@#, FromDigits@#2} & @@@ (p@1 /@
p[UpTo@2]@n));
প্যাকেজ পজিশনের স্ট্রিং নেয় এবং এটিকে ভাগ করে দেয় যা "a2h5b"
হয়ে যায় {{"a","2"},{"h","5"},{"b"}}
, তারপরে LetterNumber
অক্ষরটিকে একটি সংখ্যায় ( a -> 1
ইত্যাদি) FromDigits
রূপান্তরিত করে এবং সংখ্যাটিকে পূর্ণসংখ্যায় রূপান্তরিত করে। যদি স্ট্রিংটি ভালভাবে তৈরি না হয় তবে এই পদক্ষেপটি একটি ত্রুটি তৈরি করবে যা Check
ফিরে এসে ফিরে আসবে False
। এই দুটি সংখ্যা বোর্ডের বর্গের সাথে সম্পর্কিত একটি পূর্ণসংখ্যায় রূপান্তরিত হয়।
r = GridGraph[{8, 8}];
g = Graph[
Sort /@ UndirectedEdge @@@
Position[Outer[EuclideanDistance@## &, #, #, 1],
N@Sqrt@2] &@GraphEmbedding@r // Union]~VertexDelete~w;
পঙ্কিত অবস্থানগুলি মোছার সাথে সমস্ত নিকটবর্তী-প্রতিবেশী তির্যক প্রান্তগুলির গ্রাফ তৈরি করে।
s = Complement[{1,2,3,4,5,6,7,8},w];
e = Complement[{57,58,59,60,61,62,63,64},w];
এগুলি যথাক্রমে অবৈধভাবে শুরু এবং শেষ শৃঙ্গগুলির তালিকা
m=0
Do[m += Length@FindPath[g, i, j], {i, s}, {j, e}];
If[m == 0,True,False]
প্রারম্ভিক এবং শেষের শীর্ষগুলি উপরে লুপগুলি, প্রতিটি জুটির জন্য FindPath
তাদের মধ্যে পাথের তালিকা হবে। যদি তাদের মধ্যে কোনও পথ না থাকে তবে এটি একটি খালি তালিকা হবে, সুতরাং Length@
ফিরে আসবে 0
। যদি কোনও পথ না থাকে তবে m
শূন্য হবে এবং আমরা ফিরে যাব True
, অন্যথায় ফিরে আসব False
।