काकुरो संयोजन
क्योंकि मैं मानसिक अंकगणित नहीं कर सकता, इसलिए मैं अक्सर काकोरो पहेली के साथ संघर्ष करता हूं , जिसके लिए पीड़ित को बार-बार काम करने की आवश्यकता होती है, जो कि 1 से 9 की रेंज में अलग-अलग संख्याओं (समावेशी) की संख्या 1 से 45 की संख्या में होती है जब आप जानते हैं कि कैसे कई नंबर हैं। उदाहरण के लिए, यदि आप जानना चाहते हैं कि 3 संख्याओं में से 23 कैसे प्राप्त करें, तो एकमात्र उत्तर 6 + 8 + 9 है (यह किलर सुडोकू के समान विचार है यदि आप इससे परिचित हैं)।
कभी-कभी आपके पास अन्य जानकारी होगी, जैसे कि नंबर 1 मौजूद नहीं हो सकता है, इस प्रकार केवल 2 संख्याओं में 8 प्राप्त करने के लिए, आप केवल 2 + 6 और 3 + 5 का उपयोग कर सकते हैं (आप 4 + 4 का उपयोग नहीं कर सकते, क्योंकि वे हैं अलग नहीं है)। वैकल्पिक रूप से, यह हो सकता है कि आप पहले से ही समाधान में एक 3 पा चुके हैं, और इसलिए 19 की तरह 3 संख्याओं में 3 + 7 + 9 होना चाहिए।
आपका कार्य एक प्रोग्राम लिखना है जो किसी भी समस्या के सभी संभावित समाधानों को एक सख्त क्रम में, एक सख्त लेआउट में सूचीबद्ध करता है।
इनपुट
आपका समाधान एकल एएससीआईआई स्ट्रिंग के रूप में इनपुट प्राप्त कर सकता है , स्टड के माध्यम से, कमांड लाइन तर्क, फ़ंक्शन का तर्क, स्टैक पर छोड़ा गया मान या आपकी पसंदीदा गूढ़ भाषा जो भी पागलपन काम करती है। स्ट्रिंग फॉर्म में है
number_to_achieve number_of_numbers_required list_of_rejected_numbers list_of_required_numbers
पहले 2 तर्क विशिष्ट बेस -10 गैर-नकारात्मक गैर-शून्य पूर्णांक हैं, जो क्रमशः 1 से 45 और 1 से 9 सीमा में हैं (दशमलव बिंदु का उपयोग अमान्य इनपुट होगा), दो सूचियां केवल एक साथ बिना किसी परिसीमन के एक साथ फंसे हुए हैं। पुनरावृत्ति के बिना कोई विशेष आदेश, या '0' नहीं है अगर वे खाली सूची हैं। सूचियों (0 को छोड़कर) के बीच कोई साझा अंक नहीं हो सकता है। सीमांकक एकल रिक्त स्थान हैं।
उत्पादन
आपके आउटपुट को एक पंक्ति से शुरू करना चाहिए जिसमें संभावित समाधानों की संख्या शामिल है। आपके कार्यक्रम को प्रत्येक तेजी से महत्वपूर्ण अंक द्वारा हल किए गए लाइन-ब्रेक सीमांकित समाधान को प्रिंट करना होगा, जहां प्रत्येक अंक को उस स्थिति में रखा जाता है यदि आप 1 से 9 तक की संख्याओं को सूचीबद्ध करते हैं। नीचे दिए गए उदाहरण उम्मीद करेंगे कि यह स्पष्ट हो जाएगा।
यदि कोई अमान्य इनपुट प्रदान किया जाता है तो मुझे परवाह नहीं है कि आपका कार्यक्रम क्या करता है, हालांकि मैं यह नहीं चाहता था कि यह मेरे बूट सेक्टर को शून्य कर दे।
उदाहरण
इस उदाहरण इनपुट के लिए
19 3 0 0
अपेक्षित आउटपुट होगा
5
2 89
3 7 9
4 6 9
4 78
56 8
प्रत्येक "लापता" संख्या के स्थान पर रिक्त स्थान पर ध्यान दें, ये आवश्यक हैं; मैं उन जगहों के बारे में परेशान नहीं हूँ जिनके पास एक संख्या नहीं है (जैसे कि लापता 9s ऊपर)। आप मान सकते हैं कि आप जो भी प्रिंट कर रहे हैं वह मोनो-स्पेस फ़ॉन्ट का उपयोग करेगा। आदेश को भी नोट करें, जिसमें छोटे से छोटे अंकों के साथ समाधान को पहले सूचीबद्ध किया गया है, और फिर सबसे छोटे अगले सबसे छोटे अंक के साथ आदि।
एक अन्य उदाहरण, जो कि ऊपर दिया गया है, के आधार पर
19 3 57 9
अपेक्षित आउटपुट होगा
2
2 89
4 6 9
ध्यान दें कि हर परिणाम में एक 9 होता है, और किसी भी परिणाम में 5 या 7 नहीं होते हैं।
यदि कोई समाधान नहीं हैं, उदाहरण के लिए
20 2 0 0
फिर आपको बस एक लाइन को 0 पर आउटपुट देना चाहिए।
0
मैंने जानबूझकर इस प्रश्न के मज़े के इनपुट हिस्से को पार्स किया है। यह कोड-गोल्फ है, सबसे छोटी समाधान जीत हो सकती है।