सिक्का परिवर्तन समस्या बहुत अच्छी तरह से प्रलेखित है। मूल्यवर्ग के सिक्कों की एक अनंत आपूर्ति को देखते हुए x_1
करने के लिए x_m
आप जो को जोड़ संयोजनों की संख्या खोजने की जरूरत है y
। उदाहरण के लिए, दिए गए x = {1,2,3}
और y = 4
हमारे पास चार संयोजन हैं:
{1,1,1,1}
{1,1,2}
{1,3}
{2,2}
परिचय
सिक्का बदलने की समस्या के कई रूप हैं। इस भिन्नता में हमारे पास दो अतिरिक्त प्रतिबंध हैं:
- हर संप्रदाय को कम से कम एक बार इस्तेमाल किया जाना चाहिए।
- निश्चित रूप से सिक्कों की एक निश्चित संख्या का उपयोग कुल में किया जाना चाहिए।
उदाहरण के लिए, दिए गए x = {1,2,3}
, y = 36
और सिक्कों की कुल संख्या n = 15
कहाँ n
है जिसका उपयोग किया जाना चाहिए, हमें चार संयोजन मिलते हैं:
{1,2,2,2,2,2,2,2,3,3,3,3,3,3,3}
(1 वाले, 7 जुड़वाँ, 7 तिकड़ी){1,1,2,2,2,2,2,3,3,3,3,3,3,3,3}
(2 वाले, 5 दोहे, 8 तारे){1,1,1,2,2,2,3,3,3,3,3,3,3,3,3}
(3 वाले, 3 जुड़वां, 9 तने){1,1,1,1,2,3,3,3,3,3,3,3,3,3,3}
(4 वाले, 1 जुड़वां, 10 तने)
चुनौती
चुनौती enumerate
अपनी पसंद की भाषा में एक फ़ंक्शन लिखना है जो ऊपर वर्णित सभी संयोजनों को शामिल करता है:
- मूल्यवर्ग की सूची। उदाहरण के लिए
{1,5,10,25}
। आप सूची या सरणियों का उपयोग कर सकते हैं। - एक गैर-नकारात्मक पूर्णांक
y
जो हर संयोजन के योग को दर्शाता है। - एक गैर-नकारात्मक पूर्णांक
n
जो सिक्कों की कुल संख्या को दर्शाता है।
तर्कों का क्रम मायने नहीं रखता। पॉइंटफ़्री फ़ंक्शंस की अनुमति है।
enumerate
फ़ंक्शन का आउटपुट संयोजन की एक सूची होना चाहिए। प्रत्येक संयोजन अद्वितीय होना चाहिए और यह n
पूर्णांकों की एक सूची होनी चाहिए जो इसमें जोड़ते हैं y
। प्रत्येक संप्रदाय को प्रत्येक संयोजन में कम से कम एक बार दिखाई देना चाहिए और कोई भी संयोजन गायब नहीं होना चाहिए। पूर्णांकों और संयोजनों के क्रम से कोई फर्क नहीं पड़ता। आप आउटपुट के लिए सूची या सरणियों का उपयोग कर सकते हैं।
निम्नलिखित बढ़त के मामलों को ध्यान में रखें:
- दोनों हैं
y
औरn
शून्य हैं और संप्रदायों के सूची रिक्त है तो उत्पादन एक संयोजन की एक सूची है, खाली संयोजन (यानी{{}}
)। - अन्यथा, यदि
y
शून्य है,n
शून्य है या संप्रदायों की सूची खाली है तो उत्पादन शून्य संयोजनों (यानी{}
) की एक सूची है । - अधिक आम तौर पर, यदि
y
संप्रदायों के योग सेn
कम या संप्रदायों की संख्या से कम है तो उत्पादन शून्य संयोजनों की एक सूची है।
स्कोरिंग बाइट्स में पूरे कार्यक्रम के आकार पर आधारित होगी। ध्यान दें कि इसमें enumerate
फ़ंक्शन, सहायक फ़ंक्शन, आयात विवरण आदि शामिल हैं। इसमें परीक्षण मामले शामिल नहीं हैं।
y
संप्रदायों के योग से कम है तो अपने पुनरावर्ती समाधान के कुछ बिंदु पर आप आधार मामले तक पहुंचेंगे जहां संप्रदायों की सूची खाली है। इसलिए, उत्तर होगा {}
(अर्थात कोई समाधान नहीं मिला)। यदि n
आप संप्रदायों की संख्या से कम हैं तो आप अंततः आधार मामले में पहुँचेंगे, n = 0
लेकिन जहाँ y != 0
। इसलिए, उत्तर फिर से होगा {}
।