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 सेकंड।


Npuzzle से परिचित नहीं लोगों के लिए, कृपया दिए गए लिंक को पढ़ें ...
st0le

आपके सवाल में, नहीं grid which is filled with numbers from 0-9होना चाहिए grid which is filled with numbers from 0-8?
क्लाइड लोबो

@ क्लाइड, उफ़! :) फिक्स्ड।
st0le

बहुत यकीन है कि यह हमेशा हल करना संभव है, है ना?
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn यदि आप स्लाइडिंग नियमों का उपयोग करके लक्ष्य स्थिति से प्रारंभिक स्थिति में आ गए हैं, तो यह हमेशा हल करने योग्य है। यदि आप मनमाने ढंग से टाइलें लगाते हैं तो ऐसी अवस्थाएँ हैं जिन्हें हल नहीं किया जा सकता है। N पहेली के लिए सॉल्वेबिलिटी के लिए Google
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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.