किताबों की एक लोकप्रिय श्रृंखला में 5 किताबें हैं। इस श्रृंखला की अलग-अलग किताबों की बिक्री बढ़ाने के लिए किताबों की एक दुकान ने एक साथ कई किताबें खरीदने पर छूट देने का फैसला किया है।
इन पाँच किताबों में से किसी भी एक किताब की एक प्रति का दाम $8 है।
लेकिन अगर आप दो अलग-अलग किताबें खरीदते हैं, तो उन दोनों किताबों पर 5% छूट मिलती है।
अगर आप 3 अलग-अलग किताबें खरीदते हैं, तो 10% छूट मिलती है।
अगर आप 4 अलग-अलग किताबें खरीदते हैं, तो 20% छूट मिलती है।
अगर आप पाँचों किताबें खरीदते हैं, तो 25% छूट मिलती है।
ध्यान दीजिए कि अगर आप चार किताबें खरीदते हैं, जिनमें से 3 अलग-अलग किताबें हैं, तो आपको उन 3 किताबों पर 10% छूट मिलती है जो एक सेट बनाती हैं, लेकिन चौथी किताब का दाम अब भी $8 ही रहता है।
आपको ऐसा कोड लिखना है जो किसी भी तरह की खरीदारी की टोकरी (जिसमें इसी श्रृंखला की किताबें ही हों) का दाम निकाले और जितनी बड़ी छूट संभव हो, उतनी छूट दे।
उदाहरण के लिए, इन किताबों की टोकरी का दाम कितना है?
इन 8 किताबों को समूहों में बाँटने का एक तरीका यह है:
इससे कुल मिलेगा:
इसका नतीजा:
यानी कुल $51.60।
लेकिन इन 8 किताबों को समूहों में बाँटने का एक और तरीका यह है:
इससे कुल मिलेगा:
इसका नतीजा:
यानी कुल $51.20।
और $51.20 वह दाम है जिस पर सबसे बड़ी छूट मिलती है।
WebAssembly एक्सपोर्ट total का फंक्शन सिग्नेचर इस प्रकार है:
(func (export "total")
(param $basketOffset i32)
(param $basketLength i32)
(result i32)
)
दोनों पैरामीटर $basketOffset और $basketLength 32-बिट पूर्णांकों के ऐरे का बेस ऑफसेट और लंबाई बताते हैं। लंबाई वाले पैरामीटर का माप ऐरे में मौजूद एलिमेंट्स की संख्या से तय होता है, बाइट्स से नहीं। इस फंक्शन को कॉल करने से पहले कॉलर इस ऐरे को WebAssembly की लीनियर मेमोरी में लिखता है, और लिखना $basketOffset ऑफसेट से शुरू होता है। WebAssembly की लीनियर मेमोरी हमेशा लिटिल-एंडियन क्रम में होती है।
उदाहरण के लिए, कॉलर टोकरी [1,2] को आठ बाइट के इस क्रम में एनकोड करेगा।
| 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
| --- basket[0] --- | --- basket[1] --- |
,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
Exercism पर साइन अप कीजिए और WebAssembly को 87 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।