एक अच्छी तरह से ज्ञात एन-क्वीन समस्या का एक प्रकार है जिसमें क्वीन और नाइट शामिल हैं और कहा जाता है कि "काफी अधिक कठिन" 1 । समस्या कथन इस प्रकार है:
आपको एक समान संख्या में शूरवीरों और रानियों को शतरंज की चौकी पर रखना होगा, ताकि कोई टुकड़ा किसी अन्य टुकड़े पर हमला न करे। टुकड़ों की अधिकतम संख्या क्या है जो आप बोर्ड पर रख सकते हैं, और आप इसे कितने अलग-अलग तरीकों से कर सकते हैं?
इस कोड-गोल्फ चुनौती में, आपको 3 और 32 के बीच एक इनपुट n दिया जाएगा (एक तरह से जो आपकी भाषा के लिए सबसे उपयुक्त है)। किसी दिए गए n के लिए, उपरोक्त समस्या के लिए शून्य या अधिक समाधान हो सकते हैं। यदि कोई समाधान नहीं है, तो आपको कुछ भी नहीं करना चाहिए ( शून्य , खाली स्ट्रिंग , गलत , ...)। अन्यथा, आपको दो परिणाम देने होंगे:
- आकार n के लिए एक समाधान बोर्ड (नीचे देखें) जहां किसी भी टुकड़े को हमला किए बिना रानी या नाइट शतरंज टुकड़ा जोड़ना संभव नहीं है। रानियों और शूरवीरों की समान संख्या होनी चाहिए ।
- चलाए जाने वाले एक प्रोग्राम का स्रोत जो बिना इनपुट के स्वीकार करता है और (i) एक ही आकार n के लिए एक और समाधान (या कुछ नहीं ) देता है, उसी प्रारूप में, और साथ ही (ii) अगले समाधान के लिए एक और कार्यक्रम (और इसी तरह) ...)।
ध्यान दें कि:
- कार्यक्रमों के अनुक्रम को एक ही बोर्ड को दो बार वापस नहीं करना चाहिए, आकार n की समस्या के लिए सभी संभावित समाधानों को कवर करना होगा और अंततः समाप्त करना होगा (कोई आउटपुट नहीं)।
- आप या तो दो मान वापस कर सकते हैं, एक लौटा सकते हैं और दूसरे को प्रिंट कर सकते हैं, या दो रिटर्न मान प्रिंट कर सकते हैं।
- हालाँकि , यदि आप बोर्ड और अगले प्रोग्राम दोनों को प्रिंट करते हैं, तो बोर्ड को अगले प्रोग्राम का हिस्सा नहीं माना जाना चाहिए (मैं टिप्पणी में बोर्ड को प्रिंट करने की सलाह दूंगा, या दोनों मानक आउटपुट और त्रुटि धाराओं का उपयोग करूंगा)।
- प्रोग्राम-ए-ए-रिटर्न-वैल्यू स्ट्रिंग होना चाहिए, न कि क्लोजर।
बोर्ड का प्रारूप
- एक बोर्ड आकार n का एक वर्ग है ।
- एक बोर्ड सेल खाली हो सकता है, एक रानी या एक नाइट।
- आपको प्रत्येक प्रकार की कोशिकाओं के लिए अलग-अलग मानों का चयन करना होगा (यानी आप बोर्ड को प्रिंट करते समय क्यू, एन के अलावा अन्य प्रतीकों का उपयोग कर सकते हैं)।
- आप एक गैर स्ट्रिंग बोर्ड वापस करते हैं, यह एक होना चाहिए आदेश दिया के संग्रह एन 2 बोर्ड के मूल्यों (जैसे मैट्रिक्स, वेक्टर या पंक्ति / स्तंभ-प्रमुख क्रम में सूची, ...)।
यदि आप बोर्ड को प्रिंट करते हैं, तो आप या तो इसे मुद्रित कर सकते हैं, या एक पंक्ति के रूप में। उदाहरण के लिए, आकार 4 का एक समाधान बोर्ड निम्नानुसार मुद्रित किया जा सकता है (रिक्त स्थान की आवश्यकता नहीं है; आपके विवेक पर प्रतीक):
Q - - - - - - - - - - - - - N -
यदि आप ऐसा महसूस करते हैं, तो आप आउटपुट भी कर सकते हैं:
♛ · · · · · · · · · · · · · ♞ ·
... लेकिन यह पर्याप्त है:
Q-------------N-
इससे कोई फर्क नहीं पड़ता कि आप पंक्ति-प्रमुख या स्तंभ-प्रमुख क्रम में कोशिकाओं के माध्यम से पुनरावृति करते हैं, क्योंकि सममित समाधान हैं। उदाहरण के लिए, n = 4 के लिए समाधान हैं:
Q------N-------- Q----------N---- Q------------N-- Q-------------N- -Q----------N--- -Q------------N- -Q-------------N --Q---------N--- --Q----------N-- --Q------------N ---QN----------- ---Q----N------- ---Q---------N-- ---Q----------N- ---NQ----------- ----Q------N---- ----Q----------N N------Q-------- -------QN------- -------Q----N--- ---N----Q------- -------NQ------- --------Q------N N----------Q---- ----N------Q---- -----------QN--- -N----------Q--- --N---------Q--- -------N----Q--- -----------NQ--- N------------Q-- --N----------Q-- ---N---------Q-- N-------------Q- -N------------Q- ---N----------Q- -N-------------Q --N------------Q ----N----------Q --------N------Q
आप मेट्रिसेस के रूप में n = 5 के लिए समाधान भी देख सकते हैं ; बोर्डों में शामिल हैं #
, q
और n
प्रतीक, जो विभिन्न प्रकार की खाली कोशिकाएं हैं (नीचे मेरा उत्तर देखें)। मैं n = 6 के लिए 2836 बोर्डों की गणना करता हूं , जैसे कि स्लिफ़र के उत्तर में (मैंने बाइट की गिनती को कम करते समय एक बग पेश किया, लेकिन यह अब तय हो गया है)।
मेरे कोड में एक नहीं बल्कि दो बग ढूंढने के लिए स्लिफ़र को बहुत धन्यवाद।
स्कोर
बाइट्स में सबसे छोटा कोड जीत जाता है।
हम पहले कार्यक्रम के आकार को मापते हैं, जो एन स्वीकार करता है ।
१ । क्वीर और शूरवीर , रोजर केडब्ल्यू हुई द्वारा (सावधान! एक समाधान शामिल है)
-------------------------N--------Q-
कि अमान्य है क्योंकि अधिक टुकड़े जोड़े जा सकते हैं :) Q--------N---------------N--------Q-
।