किताबों की एक लोकप्रिय श्रृंखला में 5 किताबें हैं। इस श्रृंखला की अलग-अलग किताबों की बिक्री बढ़ाने के लिए किताबों की एक दुकान ने एक साथ कई किताबें खरीदने पर छूट देने का फैसला किया है।
इन पाँच किताबों में से किसी भी एक किताब की एक प्रति का दाम $8 है।
लेकिन अगर आप दो अलग-अलग किताबें खरीदते हैं, तो उन दोनों किताबों पर 5% छूट मिलती है।
अगर आप 3 अलग-अलग किताबें खरीदते हैं, तो 10% छूट मिलती है।
अगर आप 4 अलग-अलग किताबें खरीदते हैं, तो 20% छूट मिलती है।
अगर आप पाँचों किताबें खरीदते हैं, तो 25% छूट मिलती है।
ध्यान दीजिए कि अगर आप चार किताबें खरीदते हैं, जिनमें से 3 अलग-अलग किताबें हैं, तो आपको उन 3 किताबों पर 10% छूट मिलती है जो एक सेट बनाती हैं, लेकिन चौथी किताब का दाम अब भी $8 ही रहता है।
आपको ऐसा कोड लिखना है जो किसी भी तरह की खरीदारी की टोकरी (जिसमें इसी श्रृंखला की किताबें ही हों) का दाम निकाले और जितनी बड़ी छूट संभव हो, उतनी छूट दे।
उदाहरण के लिए, इन किताबों की टोकरी का दाम कितना है?
इन 8 किताबों को समूहों में बाँटने का एक तरीका यह है:
इससे कुल मिलेगा:
इसका नतीजा:
यानी कुल $51.60।
लेकिन इन 8 किताबों को समूहों में बाँटने का एक और तरीका यह है:
इससे कुल मिलेगा:
इसका नतीजा:
यानी कुल $51.20।
और $51.20 वह दाम है जिस पर सबसे बड़ी छूट मिलती है।
एक ही Go func, Cost, बनाइए, जो निर्धारित डिस्काउंट के आधार पर दी गई पुस्तकों की सूची की लागत निकालता है।
func Cost के लिए यह सिग्नेचर इस्तेमाल कीजिए:
func Cost(books []int) int
Cost कुल लागत (डिस्काउंट लगाने के बाद) सेंट में लौटाएगा। उदाहरण के लिए, एक ही पुस्तक के लिए लागत 800 सेंट होती है, जो $8.00 के बराबर है। इस अभ्यास के लिए केवल पूर्णांक गणनाएँ ही आवश्यक हैं।
Exercism पर साइन अप कीजिए और Go को 35 कॉन्सेप्ट167 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।