লাকপা একজন শেরপা পর্বত গাইড ও পোর্টার। কয়েক মাস ধরে সতর্ক পরিকল্পনার পর, লাকপা যে অভিযানের হয়ে কাজ করেন, সেই অভিযানটি এখন রওনা দিতে চলেছে। বেস ক্যাম্পে তিনি যে জিনিসপত্র বহন করে এনেছেন, তার মান তাকে পরিশোধ করা হবে।
তার সামনে অনেকগুলো জিনিস রয়েছে, যার প্রতিটির একটি মান ও ওজন আছে। লাকপা খুশি মনে সব জিনিসই নিয়ে নিতেন, কিন্তু তার ন্যাপস্যাক সীমিত ওজনের বেশি ধারণ করতে পারে না।
আপনার কাজ হলো, ন্যাপস্যাকের বহন ক্ষমতাকে মাথায় রেখে, কোন আইটেমগুলো নিলে তার বেছে নেওয়ার মোট মান সর্বোচ্চ হবে তা নির্ধারণ করা।
আইটেমগুলোকে আইটেমের একটি অ্যারে হিসেবে উপস্থাপন করা হবে। প্রতিটি আইটেমের একটি ওজন ও একটি মান থাকবে। প্রদত্ত সব মানই কঠোরভাবে ধনাত্মক হবে। Lhakpa প্রতিটি আইটেম থেকে মাত্র একটি করে নিতে পারবেন।
উদাহরণস্বরূপ:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
উপরের উদাহরণে, প্রথম আইটেমের ওজন ৫ ও মান ১০, দ্বিতীয় আইটেমের ওজন ৪ ও মান ৪০, এভাবে চলবে। এই উদাহরণে, নিজের মান সর্বোচ্চ করতে Lhakpa-কে দ্বিতীয় ও চতুর্থ আইটেমটি নিতে হবে, যা এই ক্ষেত্রে ৯০। তার ন্যাপস্যাকের ওজনের সীমা ১০ হওয়ায় তিনি ৯০-এর বেশি পেতে পারবেন না।
আইটেমগুলোকে রেকর্ড দিয়ে প্রকাশ করা হয়, যেগুলো item.lfe-এ ডিফাইন করা হয়েছে।
ওজন পেতে item-weight এবং মান পেতে item-value ব্যবহার করুন।
;; Create an item with weight=5, value=50
(set item (make-item weight 5 value 50))
;; Get the weight. Returns 5.
(item-weight item)
;; Get the value. Returns 50.
(item-value item)
Exercism-এ সাইন আপ করুন, Lisp Flavoured Erlang ট্র্যাকের 68টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।