जांचें कि क्या 15 पहेली हल करने योग्य है


9

पंद्रह पहेली अजीब है व्यवस्था की है कि केवल आधा संभव राज्यों में व्याख्या करने योग्य हैं। यदि आप 14 और 15 टाइल्स फ्लिप करते हैं, तो कोई रास्ता नहीं है जिससे आप ब्लॉक को स्लाइड कर सकें ताकि वे वापस फ़्लिप हो जाएं।

आपका कार्य एक ऐसे प्रोग्राम का निर्माण करना है जो आपकी पसंद के प्रारूप में पूर्णांकों की एक सूची को स्वीकार करता है (जिसमें 0 से 15 तक की संख्याओं में से प्रत्येक का एक उदाहरण है, जिसमें 0 रिक्त स्थान है) टाइल्स की व्यवस्था की स्थिति का प्रतिनिधित्व करता है। एक 4x4 ग्रिड, और एक एकल बूलियन मूल्य का निर्धारण करता है जो ग्रिड को हल करने योग्य है या नहीं।

किसी भी भाषा में ऐसा करने वाला सबसे छोटा कोड जीत जाता है।


अच्छा सवाल :)
क्रंचर

मैं यह सवाल पूछने जा रहा था, लेकिन एक मनमाना पक्ष-लंबाई के साथ; लेकिन यह चुनौती को बहुत कम जोड़ता है।
जोनाथन एलन

जवाबों:


0

जेली , 9 बाइट्स

Œc>/€;TSḂ

पंक्ति-प्रमुख क्रम में पढ़ने वाले पूर्णांकों की सूची को बाएँ-दाएँ और दाएँ-बाएँ के बीच बारी-बारी से स्वीकार करता है, जो 0यदि हल करने योग्य है और 1यदि नहीं है, तो ( ¬कोड के दाईं ओर इस जोड़ को उल्टा करें ) पैदावार देता है ।

इसे ऑनलाइन आज़माएं! (यह उदाहरण एक बोर्ड है जहां 12 को जगह में स्लाइड करने की आवश्यकता है)

कैसे?

करने के लिए इसी तरह के जॉन ड्वोरक के जवाब हम parities की गणना और एक सर्प जैसी सरल चेकर बोर्ड समता के लिए इनपुट आदेश का उपयोग, हालांकि बजाय समता की समानता की जाँच की हम गैर शून्य सूचकांक और परीक्षण के साथ बाहर के आदेश गिनती योग है कि क्या अजीब:

Œc>/€;TSḂ - Link: list of integers
Œc        - unordered pairs
    €     - for each:
   /      -   reduce with:
  >       -     greater than?
      T   - truthy indices (i.e. [1..16] without 1-indexed index of 0)
     ;    - concatenate
       S  - sum
        Ḃ - is odd?

4

जे, 28 वर्ण

((C.!.2=_1^i.&0)&.".&.stdin''

इनपुट ऑर्डर पंक्ति-प्रमुख है जिसमें पंक्तियों को तालिका के पार एकल पथ में दाएं से बाएं और दाएं से बाएं पढ़ा जाता है। मान लेता है कि शून्य शीर्ष बाएं कोने से संबंधित है।

विंडोज पर उपयोग:

<nul set /p="0 1 2 3 7 6 5 4 8 9 10 11 15 14 13 12" | jconsole c:\...\15.jhs

स्पष्टीकरण:

  • <nul set /p=इनपुट में एक नई लाइन को रोकने के लिए उपयोग किया जाता है, जो echoकि ".पसंद नहीं करता है। बेशक, यूनिक्स समर्थन करता है echo /n
  • v&.".&.stdin''स्टड "अर्थ" इनपुट के तहत "v पार्स अंडर रीडिंग" पढ़ता है, फिर इनपुट पार्स करें, फिर वी करें, फिर पूर्ववत करें (= प्रारूप), फिर पूर्ववत इनपुट (= आउटपुट)। 1!:1]3एक वर्ण छोटा है, लेकिन इसका कोई परिभाषित व्युत्क्रम नहीं है।
  • C.!.2का अर्थ है "क्रमपरिवर्तन समता"। यह या तो 1(यहां तक ​​कि समता) या _1विषम समता देता है। अर्थात्,_1^inversions
  • _1^i.&0 "-1 के सूचकांक की शक्ति के लिए -1" का मतलब है।
  • इस प्रकार, का C.!.2=_1^i.&0अर्थ है "क्या क्रमबद्धता समता छेद स्थिति समता के बराबर है?"

यह 4x4 बोर्ड के लिए काम करता है, लेकिन अगर वांछित अंत स्थिति पंक्ति-प्रमुख बाएं-से-दाएं है, तो हल की गई स्थिति के लिए क्रमांकन में विषम संख्या, और इस प्रकार विषम समता है। इसके अलावा, जब वांछित छेद की स्थिति ऊपरी बाएं से नीचे दाईं ओर चलती है, तो समता उलट जाती है (किसी भी इनपुट ऑर्डर के लिए)। दोनों मामलों में, फिक्स एक चरित्र है: अपेक्षित समानता को उलटने के -बाद जोड़ें =

शुद्धता का प्रमाण:

प्रत्येक चाल के बाद, शून्य कुछ संख्या के साथ एक स्थिति का आदान-प्रदान करता है, क्रमबद्धता समता को प्रवाहित करता है। शून्य भी सफेद और काले रंग के चेकबोर्ड पदों के बीच वैकल्पिक होता है, जो इनपुट ऑर्डर में विषम और यहां तक ​​कि पदों द्वारा इंगित किया जाता है। इस प्रकार, यह स्थिति neccessary है। यह गिनती के तर्क से भी पर्याप्त है: यह सामान्य ज्ञान है कि पदों का ठीक आधा भाग हल करने योग्य है। यह स्थिति संभावित स्थिति के ठीक आधे हिस्से को फ़िल्टर करती है।


जब आप कहते हैं कि "शून्य विषम के बीच भी एक विकल्प देता है": क्या यह +1, -1, +4, या -4 से नहीं बदलता है? मुझे लगता है कि एक चेक किया गया पैटर्न आपको आवश्यक रंग देता है, लेकिन इसे अधिक सटीक रूप से वर्णित किया जा सकता है।
पीटर टेलर

@PeterTaylor आप सही हैं; माफ़ करना। क्या मेरा एडिट एक वैध फिक्स के रूप में गिना जाता है?
जॉन ड्वोरक

मुझे लगता है कि आपके संपादित पते एक पूरी तरह से अलग मुद्दे को संबोधित करते हैं। मेरे द्वारा उद्धृत बिट अंतिम पैराग्राफ में है।
पीटर टेलर

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