हम अपनी अजीब पहेलियों से प्यार करते हैं, हमें ब्रिट्स


16

कुछ ब्रिटिश अखबारों में एक गेम है जिसे हिदातो के नाम से जाना जाता है । यह सुडोकू के समान है , यद्यपि एक पंक्ति और ब्लॉक में 1-9 होने के बजाय, यह संख्याओं को रखने के बारे में है कि वे 01सभी तरह से उच्चतम एक तक जुड़ते हैं , इसलिए वे सभी क्षैतिज, तिरछे या लंबवत रूप से छू रहे हैं ।

इनपुट में अलग-अलग लाइनें होंगी \n, जिसमें स्पेस द्वारा अलग किए गए ब्लॉक होंगे, जिन्हें आप दो अक्षर चौड़ा मान सकते हैं। प्रत्येक ब्लॉक एक संख्या होगी, जिसे भरने के लिए एक रिक्त स्थान (इसके द्वारा दर्शाया गया है --), या एक दीवार जिसमें संख्याएँ नहीं हो सकती हैं ( XX)।

आपके आउटपुट को उपलब्ध संख्या के साथ प्रदान किए गए खाली ब्लॉकों के साथ मेल खाना चाहिए। ध्यान दें कि एक अद्वितीय, या यहां तक ​​कि अस्तित्व नहीं हो सकता है, एक समाधान - कुछ अपनी अस्पष्टता के कारण कई पैदा कर सकता है, बहुत अधिक सुडोकू की तरह, और कुछ शाब्दिक रूप से अस्वीकार्य हो सकते हैं, जिस स्थिति में आपको एक फालसे आउटपुट देना चाहिए , लेकिन आप मान सकते हैं कि इनपुट नीचे दिए गए हैं।

एक मानक शीर्ष लेख का उपयोग करें Language: XX bytes। हैप्पी गोल्फिंग!

उदाहरण

आदानों 01 XX 03, 01 -- 04, 01 --, आदि सभी वापसी कुछ चाहिए falsey

इनपुट:

01 -- --
-- XX 05

आउटपुट:

01 03 04
02 XX 05

इनपुट:

-- 33 35 -- -- XX XX XX    
-- -- 24 22 -- XX XX XX      
-- -- -- 21 -- -- XX XX
-- 26 -- 13 40 11 XX XX
27 -- -- -- 09 -- 01 XX
XX XX -- -- 18 -- -- XX
XX XX XX XX -- 07 -- --
XX XX XX XX XX XX 05 --

आउटपुट:

32 33 35 36 37 XX XX XX
31 34 24 22 38 XX XX XX
30 25 23 21 12 39 XX XX
29 26 20 13 40 11 XX XX
27 28 14 19 09 10 01 XX
XX XX 15 16 18 08 02 XX
XX XX XX XX 17 07 06 03
XX XX XX XX XX XX 05 04

इनपुट:

XX XX XX XX -- 53 XX XX XX XX
XX XX XX XX -- -- XX XX XX XX
XX XX 56 -- -- -- 30 -- XX XX
XX XX -- -- -- -- -- -- XX XX
XX -- -- 20 22 -- -- -- -- XX
XX 13 -- 23 47 -- 41 -- 34 XX
-- -- 11 18 -- -- -- 42 35 37
-- -- -- -- 05 03 01 -- -- --
XX XX XX XX -- -- XX XX XX XX
XX XX XX XX 07 -- XX XX XX XX

आउटपुट:

XX XX XX XX 52 53 XX XX XX XX
XX XX XX XX 54 51 XX XX XX XX
XX XX 56 55 28 50 30 31 XX XX
XX XX 26 27 21 29 49 32 XX XX
XX 25 24 20 22 48 45 44 33 XX
XX 13 19 23 47 46 41 43 34 XX
14 12 11 18 04 02 40 42 35 37
15 16 17 10 05 03 01 39 38 36
XX XX XX XX 09 06 XX XX XX XX
XX XX XX XX 07 08 XX XX XX XX

यह सुनिश्चित करना कि मुझे समझ में आ रहा है: कुछ गैर-चलने योग्य कोशिकाओं के साथ एक ग्रिड को देखते हुए, एक हैमिल्टनियन मार्ग ढूंढें जो पूर्वनिर्मित कोशिकाओं को फिट करता है?
Geobits

@AmiRuse वाह। यह मुश्किल लग रहा है। (बेशक, यह एक ऐसे व्यक्ति से आ रहा है जो फोटो एडिटिंग से नफरत करता है।) यहां किसी और के बारे में जानकर अच्छा लगता है, जिनके लोगो के रूप में एक वीजी चरित्र है। : O
kirbyfan64sos

क्या हम उदाहरण के लिए एक समाधान देख सकते हैं? और भी उदाहरण सहायक होने वाले हैं।
Kade

प्रतिभाशाली :)। आपके पास बाद में एक जनरेटर चुनौती भी हो सकती है
बीटा डेके

3
क्या इनपुट पद्धति को सरल बनाया जा सकता है? शायद पूर्णांक के 2 डी सरणी का उपयोग करें, और -1दीवार हो सकती है, और 0रिक्त हो सकती है? इससे पहेली की वास्तविक चुनौती पर ध्यान केंद्रित करना आसान हो जाएगा , और फिर ज़ीरो या पार्सिंग स्ट्रिंग्स के साथ पैडिंग नंबरों की कोई जटिलता नहीं है।
mbomb007

जवाबों:


1

जावास्क्रिप्ट (Node.js) , 482 बाइट्स

यह एक ब्रूट-फोर्स सॉल्यूशन है, यह 01प्रत्येक पड़ोसी सेल को खाली कोशिकाओं ( --) या वांछित संख्या के लिए जाँच करता है और पूरा होने या असंभवता के मार्ग का अनुसरण करता है। यदि वांछित संख्या मौजूद है और पड़ोसी नहीं है तो यह इस समाधान को शार्टकट करता है। सबसे बड़े ग्रिड के लिए कुछ सेकंड लगते हैं।

यह शायद विशेष रूप से दिलचस्प नहीं है, लेकिन मुझे लगा कि मैं रोसेटा कोड से जुड़े उत्तरों को देखने से पहले एक समाधान बनाने में अपना हाथ आज़माऊंगा और मुझे थोड़ी मुश्किल चुनौती से निपटने में मज़ा आया!

कई मौजूद होने पर सभी समाधान ढूँढता है । शरीर एक फ़ंक्शन है जो एक दो आयामी सरणी को स्वीकार करता है और पाद वांछित इनपुट को इनपुट प्रक्रिया करता है, और वांछित प्रारूप में परिणाम भी देता है। अधिक जानकारी प्रदान करने के लिए खुश (और यदि रुचि है तो कम गोल्फ कार्यान्वयन)।

f=a=>{F=(D,n,j)=>[Z=[].concat(...D),z=Z.indexOf(j),z>-1&&[x=z%w,y=z/w|0],z>-1&&[[x-1,y-1],[x,y-1],[x+1,y-1],[x-1,y],[x+1,y],[x-1,y+1],[x,y+1],[x+1,y+1]]][n];C=q=>q.map(Q=>Q.slice());w=a[0][L='length'];l=F(a,0).filter(c=>c!='XX')[L];R=[];r=(s,d)=>{let n=`0${+s+1}`.slice(-2);N=F(d,2,n);n>l?R.push(C(d)):~F(d,1,s)?(p=F(d,3,s),p.filter(P=>P==N+'')[L]?r(n,C(d)):!~F(d,1,n)?p.map(I=>{[x,y]=I,(x<0||x>w-1||y<0||y>d[L]-1)||d[y][x]=='--'&&(D=C(d),r(D[y][x]=n,D))}):0):0};r('01',a);return R}

इसे ऑनलाइन आज़माएं!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.