यहां पहला सवाल, अगर यह डुप्लिकेट या बुरी चुनौती है तो मुझ पर चिल्लाओ मत।
परिचय
मैंने खुद इस चुनौती के बारे में सोचा, और यह शुरुआती कोड-गोल्फरों के लिए एक अच्छी बुनियादी पहेली लगती है। यह मुझे यह तय करने में भी मदद कर सकता है कि कौन सी कोड-गोल्फिंग भाषा सीखनी है।
चुनौती
पूर्णांकों की एक ऐसी सरणी को देखते हुए जो nआउटपुट के बराबर या उससे कम होती है , उस सरणी से न्यूनतम संख्याओं की संख्या वापस करती है जो बिलकुल योग करती है n।
आप एक फ़ंक्शन या पूर्ण प्रोग्राम लिखना चुन सकते हैं।
इनपुट
आप सुरक्षित रूप से मान सकते हैं 0 <= n < 2^31।
किसी भी प्रकार की एक सरणी या सूची ( vectorC ++ या जावा के LinkedListलिए अनुमति दी जाती है), साथ में nऔर एक वैकल्पिक पैरामीटर लें length, जो सरणी की लंबाई को निर्दिष्ट करता है।
आप इनपुट को स्पेस-सेपरेटेड स्ट्रिंग के रूप में भी ले सकते हैं, nजो कॉमा या स्पेस से अलग होता है:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
अगर यह आसान है।
उत्पादन
आउटपुट, या उस सरणी से न्यूनतम संख्याओं को वापस लौटाएं जो बिल्कुल योग करते हैं n। उपरोक्त उदाहरण का उपयोग करना:
1 5 7 3 7 3 6 3 2 6 3,10
आपका कार्यक्रम प्रिंट होना चाहिए:
2
क्योंकि संख्या की न्यूनतम संख्या है कि अप करने के लिए योग 10है 2( 7और 3)।
इस मामले में कि कोई समाधान नहीं है, एक नकारात्मक प्रिंट, या वापस लौटें 0, "कोई समाधान नहीं" (हालांकि वह स्मार्ट नहीं होगा), ∞(जैसा कि सुझाव दिया गया है), या किसी भी अन्य झूठा मूल्य, एक खाली स्ट्रिंग के अपवाद के साथ।
उदाहरण इनपुट और आउटपुट
इनपुट:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
आउटपुट:
2
3
-1
स्कोरिंग
यह कोड-गोल्फ है, इसलिए बाइट्स जीत में सबसे छोटा कोड है।
शीर्ष उत्तर क्रिसमस पर स्वीकार किया जाएगा।
falseबिना समाधान वाले मामलों के लिए आउटपुट दे सकते हैं?