ন্যাপস্যাক

ন্যাপস্যাক

মধ্যম

ভূমিকা

লাকপা একজন শেরপা পর্বত গাইড ও পোর্টার। কয়েক মাস ধরে সতর্ক পরিকল্পনার পর, লাকপা যে অভিযানের হয়ে কাজ করেন, সেই অভিযানটি এখন রওনা দিতে চলেছে। বেস ক্যাম্পে তিনি যে জিনিসপত্র বহন করে এনেছেন, তার মান তাকে পরিশোধ করা হবে।

তার সামনে অনেকগুলো জিনিস রয়েছে, যার প্রতিটির একটি মান ও ওজন আছে। লাকপা খুশি মনে সব জিনিসই নিয়ে নিতেন, কিন্তু তার ন্যাপস্যাক সীমিত ওজনের বেশি ধারণ করতে পারে না।

নির্দেশনা

আপনার কাজ হলো, ন্যাপস্যাকের বহন ক্ষমতাকে মাথায় রেখে, কোন আইটেমগুলো নিলে তার বেছে নেওয়ার মোট মান সর্বোচ্চ হবে তা নির্ধারণ করা।

আইটেমগুলোকে আইটেমের একটি অ্যারে হিসেবে উপস্থাপন করা হবে। প্রতিটি আইটেমের একটি ওজন ও একটি মান থাকবে। প্রদত্ত সব মানই কঠোরভাবে ধনাত্মক হবে। Lhakpa প্রতিটি আইটেম থেকে মাত্র একটি করে নিতে পারবেন।

উদাহরণস্বরূপ:

Items: [
  { "weight": 5, "value": 10 },
  { "weight": 4, "value": 40 },
  { "weight": 6, "value": 30 },
  { "weight": 4, "value": 50 }
]

Knapsack Maximum Weight: 10

উপরের উদাহরণে, প্রথম আইটেমের ওজন ৫ ও মান ১০, দ্বিতীয় আইটেমের ওজন ৪ ও মান ৪০, এভাবে চলবে। এই উদাহরণে, নিজের মান সর্বোচ্চ করতে Lhakpa-কে দ্বিতীয় ও চতুর্থ আইটেমটি নিতে হবে, যা এই ক্ষেত্রে ৯০। তার ন্যাপস্যাকের ওজনের সীমা ১০ হওয়ায় তিনি ৯০-এর বেশি পেতে পারবেন না।

রেজিস্টার

রেজিস্টার ব্যবহার টাইপ বর্ণনা
$a0 ইনপুট অ্যাড্রেস আইটেমের ওজনের অ্যারে
$a1 ইনপুট অ্যাড্রেস আইটেমের মানের অ্যারে
$a2 ইনপুট ইন্টিজার আইটেমের সংখ্যা
$a3 ইনপুট ইন্টিজার সর্বোচ্চ ওজন
$v0 আউটপুট ইন্টিজার সর্বোচ্চ মান
$t0-9 টেম্পোরারি যেকোনো টেম্পোরারি স্টোরেজের জন্য ব্যবহৃত

সূত্র

Wikipediaলিংকটি নতুন উইন্ডো বা ট্যাবে খোলে
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
MIPS Assembly Exercism

ন্যাপস্যাক শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, MIPS Assembly ট্র্যাকের 70টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।