8 ধাঁধা সমাধান করুন


13

8 পাজলটি 15 ধাঁধার (বা স্লাইডিং ধাঁধা ) এর ছোট আকার । আপনার একটি 3x3গ্রিড রয়েছে যা এলোমেলোভাবে সাজানো 0-8 (0 টি ফাঁকা টাইল বোঝায়) থেকে পূর্ণ হয়। আপনার কাজটি একটি 3x3 গ্রিডকে ইনপুট দেওয়া এবং লক্ষ্য স্থিতিতে পৌঁছানোর জন্য সবচেয়ে সংক্ষিপ্ত সমাধান (সর্বনিম্ন চালগুলি) দেখানো। আউটপুটে প্রথম রাজ্য সহ প্রতিটি বোর্ডস্টেট প্রদর্শন করুন।

একাধিক অনুকূল সমাধান হতে পারে, আপনার কেবল একটি মুদ্রণ করা দরকার।

ইনপুট: (ছোট উদাহরণ)

1 2 0
4 5 3
7 8 6

আউটপুট:

2 <- denotes minimum number of moves required
1 2 0
4 5 3
7 8 6

1 2 3
4 5 0
7 8 6

1 2 3
4 5 6
7 8 0 <- goal state

যদি ধাঁধাটি সমাধান করা যায় না, কেবল মুদ্রণ করুন -1( অবিশ্বাস্য চিহ্নিত করুন)

সম্পাদনা করুন : সময় সীমা: <30 সেকেন্ড।


যারা এনপজলটির সাথে পরিচিত নয় তাদের জন্য দয়া করে প্রদত্ত লিঙ্কটি পড়ুন ...
st0le

আপনার প্রশ্নে, না grid which is filled with numbers from 0-9হওয়া উচিত grid which is filled with numbers from 0-8?
ক্লাইড লোবো

ক্লাইড, উফ! :) স্থির।
st0le

খুব নিশ্চিত যে এটি সমাধান করা সর্বদা সম্ভব, তাই না?
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস ইউরান আপনি যদি স্লাইডিং বিধিগুলি ব্যবহার করে লক্ষ্য রাজ্য থেকে প্রাথমিক অবস্থায় পৌঁছে থাকেন তবে এটি সর্বদা সমাধানযোগ্য। আপনি যদি ইচ্ছামত টাইলস স্থাপন করেন তবে এমন রাজ্যগুলি রয়েছে যা সমাধান করা যায় না। এন ধাঁধার জন্য সমাধানের জন্য গুগল
st0le

উত্তর:


5

পাইথন, 418 টি অক্ষর

কোডটি নিখরচায়ভাবে সমস্ত অবস্থানকে গণ্য করে এবং তাদের গভীরতার মানচিত্র (ডি) এবং সমাধানের (ই) নিকটে অবস্থিত একটি অবস্থান তৈরি করে। তারপরে এটি আউটপুট পাওয়ার জন্য লক্ষ্য স্থিতি দেখায়।

D={(1,2,3,4,5,6,7,8,0):0}
E=D.copy()
def Z(a,d):
 b=list(a);b[i],b[i+d]=b[i+d],0;b=tuple(b)
 if b not in E:E[b]=a;D[b]=D[a]+1
for x in' '*32:
 for a in E.copy():
  i=list(a).index(0)
  if i>2:Z(a,-3)
  if i%3:Z(a,-1)
  if i%3<2:Z(a,1)
  if i<6:Z(a,3)
g=[]
for x in' '*3:g+=map(int,raw_input().split())
g=tuple(g)
if g in E:
 print D[g]
 while g:
  for i in(0,3,6):print'%d %d %d'%g[i:i+3]
  g=E[g];print
else:print -1

' '*3কৌশল মত ।
st0le
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.