Lhakpa एक शेरपा हैं, जो पहाड़ों में रास्ता दिखाने और सामान ढोने का काम करती हैं। कई महीनों की सोच-समझकर की गई तैयारी के बाद, Lhakpa जिस अभियान के लिए काम करती हैं वह अब रवाना होने वाला है। जो सामान उन्होंने आधार शिविर तक पहुँचाया था, उसकी कीमत उन्हें मिलेगी।
उनके सामने बहुत सारी चीज़ें रखी हैं, और हर चीज़ की अपनी कीमत और अपना वज़न है। Lhakpa खुशी-खुशी ये सारी चीज़ें ले लेतीं, लेकिन उनका झोला सीमित वज़न ही उठा सकता है।
आपको यह तय करना है कि कौन-सी चीज़ें उठानी हैं, जिससे उसके चुनाव की कुल वैल्यू अधिकतम हो जाए। साथ ही यह भी ध्यान रखना है कि नैपसैक में कितना वज़न रखा जा सकता है।
चीज़ें एक ऐरे के रूप में दी जाएँगी। हर चीज़ का एक वज़न और एक वैल्यू होगा। दी गई सभी वैल्यू पूरी तरह धनात्मक होंगी। Lhakpa हर चीज़ में से एक ही ले सकती है।
उदाहरण के लिए:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
ऊपर दिए उदाहरण में पहली चीज़ का वज़न 5 और वैल्यू 10 है, दूसरी चीज़ का वज़न 4 और वैल्यू 40 है, और इसी तरह आगे भी। इस उदाहरण में Lhakpa को अपनी वैल्यू अधिकतम करने के लिए दूसरी और चौथी चीज़ उठानी चाहिए, जिससे उसकी वैल्यू 90 हो जाती है। वह 90 से अधिक वैल्यू नहीं पा सकती, क्योंकि उसके नैपसैक पर वज़न की सीमा 10 है।
आइटम लीनियर मेमोरी के ज़रिए पास किए जाते हैं, जिसमें पहला आइटम ऑफसेट 0 पर होता है। हर आइटम को 32-बिट पूर्णांकों के एक जोड़े के रूप में दर्शाया जाता है। जोड़े में पहली संख्या वज़न होती है और दूसरी वैल्यू।
उदाहरण के लिए, दो आइटम वाला एक ऐरे लीजिए। पहले आइटम का weight=1, value=2 है और दूसरे का weight=5, value=8.
तब यह ऐरे मेमोरी में कुछ इस तरह दिखेगा:
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |
| - item 1 weight - | -- item 1 value - | - item 2 weight - | -- item 2 value - |
|0x01,0x00,0x00,0x00|0x02,0x00,0x00,0x00|0x05,0x00,0x00,0x00|0x08,0x00,0x00,0x00|
अगर आप चाहें, तो इनपुट के लिए इस्तेमाल की गई लीनियर मेमोरी के एड्रेस ओवरराइट कर सकते हैं।
Exercism पर साइन अप कीजिए और WebAssembly को 87 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।