আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা সংখ্যার একটি অ্যারে নেয়, প্রথম আর্গুমেন্ট হিসাবে এবং একটি সংখ্যা, সংখ্যা, দ্বিতীয় আর্গুমেন্ট হিসাবে।
ফাংশনটি নির্ধারণ করবে যে অ্যারের অ্যারের উপাদানগুলিকে num গ্রুপে বিতরণ করার একটি উপায় আছে কিনা যাতে সমস্ত গ্রুপের সমষ্টি সমান হয়। যদি এমন কোনো উপায় থাকে, তাহলে আমাদের ফাংশনটি সত্য, অন্যথায় মিথ্যা ফিরে আসা উচিত।
যেমন −
যদি ইনপুট অ্যারে এবং সংখ্যা হয় −
const arr =[4, 6, 3, 3, 7, 4, 1];const num =4;
তারপর আউটপুট −
হওয়া উচিতconst আউটপুট =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); যদি (sum % num !==0 || arr.some(num => num> sum / num)) { মিথ্যা ফেরত দিন; } const use =নতুন সেট(); রিটার্ন (ফাংশন ফাইন্ড(স্টার্ট, টার্গেট) { if (used.size ===arr.length) { রিটার্ন true; } যদি (টার্গেট <0) { রিটার্ন মিথ্যা; } যদি (টার্গেট ===0) { রিটার্ন ফাইন্ড( 0, যোগফল / সংখ্যা); } এর জন্য (আলো i =শুরু; iআমাদের সমাধানে আমরা যে পদক্ষেপগুলি নিয়েছি তা হল −
৷
ধাপ 1. যদি মোট যোগফলকে সংখ্যা দ্বারা ভাগ করা না যায় বা সংখ্যার একটি যোগফল/সংখ্যার চেয়ে বড় হয়, আমরা মিথ্যা ফেরত দিই৷
ধাপ 2. ব্যবহৃত নম্বর ট্র্যাক করতে আমরা একটি হ্যাশসেট ব্যবহার করেছি৷
ধাপ 3. আমরা সাব পার্টিশন খুঁজে বের করতে শুরু করেছি।
যদি সমস্ত সংখ্যা ব্যবহার করা হয়, তাহলে আমরা শেষ।
উপসেট যোগফল খুব বড় হলে, আমরা অনুসন্ধান করা বন্ধ করে দিয়েছি।
যদি আমরা একটি উপসেট খুঁজে পাই, আমরা সমস্ত নম্বর ব্যবহার না করা পর্যন্ত অনুসন্ধান চালিয়ে যাব।
এবং শেষ পর্যন্ত, আমরা প্রতিটি অব্যবহৃত নম্বর চেষ্টা করেছি৷
আউটপুট
এবং কনসোলে আউটপুট হবে −
সত্য