কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অ্যারে কি n পার্টিশনে সমান যোগফলে ভাগ করা যায়


আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে একটি সংখ্যার অ্যারে arr এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি সংখ্যা num নেবে।

ফাংশনটি নির্ধারণ করবে কি arr এর উপাদানগুলোকে num সংখ্যক গ্রুপে বিতরণ করা সম্ভব যাতে সব গ্রুপের যোগফল সমান হয়। যদি এমন কোনো উপায় থাকে তবে ফাংশনটি true রিটার্ন করবে, অন্যথায় false।

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

const arr = [4, 6, 3, 3, 7, 4, 1]; const num = 4;

তবে আউটপুট হবে:

const output = true;

কারণ চারটি গ্রুপ হচ্ছে: [7], [1, 6], [4, 3], [4, 3]

উদাহরণ

কোডটি নিচের মতো হবে:

const arr = [4, 6, 3, 3, 7, 4, 1]; const num = 4; const canDivide = (arr = [], num = 1) => { const sum = arr.reduce((acc, num) => acc + num); if (sum % num !== 0 || arr.some(num => num > sum / num)) { return false; } const used = new Set(); return (function find(start, target) { if (used.size === arr.length) { return true; } if (target < 0) { return false; } if (target === 0) { return find(0, sum / num); } for (let i = start; i < arr.length; i++) { if (!used.has(i)) { used.add(i); if (find(i + 1, target - arr[i])) { return true; } used.delete(i); } } return false; })(0, sum / num); }; console.log(canDivide(arr,num));

আমাদের সমাধানের ধাপগুলো হলো:

  • ধাপ ১: যদি মোট যোগফল num দিয়ে ভাগ না যায় বা কোনো সংখ্যা sum/num চেয়ে বড় হয়, তবে false রিটার্ন করুন।

  • ধাপ ২: ব্যবহৃত সংখ্যাগুলো ট্র্যাক করার জন্য একটি HashSet ব্যবহার করা হয়েছে।

  • ধাপ ৩: সাব-পার্টিশনগুলো খুঁজে বের করা শুরু করা হয়েছে।

  • যদি সব সংখ্যা ব্যবহার হয়ে যায়, তবে কাজ শেষ।

  • যদি সাবসেটের যোগফল লক্ষ্যের চেয়ে বড় হয়, তবে সার্চ বন্ধ করুন।

  • যদি একটি সাবসেট পাওয়া যায়, তবে সব সংখ্যা ব্যবহার না হওয়া পর্যন্ত সার্চ চালিয়ে যান।

  • শেষে, প্রতিটি অনব্যবহৃত সংখ্যা চেষ্টা করুন।

আউটপুট

কনসোলে আউটপুট হবে:

true

  1. অ্যারেকে জাভাস্ক্রিপ্ট স্ট্রিং-এ কনভার্ট করার পদ্ধতি?

  2. জাভাস্ক্রিপ্টে new কীওয়ার্ড দিয়ে অ্যারে তৈরির পদ্ধতি

  3. জাভাস্ক্রিপ্টে অবজেক্টে প্রপার্টি আছে কিনা চেক করা

  4. জাভাস্ক্রিপ্টে অবজেক্ট 머জ করে সিঙ্গেল অবজেক্ট অ্যারে তৈরি করা