একটি সংখ্যা sum কে k দৈর্ঘ্যের অ্যারেতে সমানভাবে ভাগ করা।
সমাধান
const splitNumber = (len, sum) => {
if (len <= 0) return [];
if (sum === 0) return new Array(len).fill(0);
const value = sum / len;
return new Array(len).fill(value);
};
// টেস্ট
console.log(splitNumber(30, 121));
// ৩০টি 4.033333333333333
// পূর্ণসংখ্যা ভার্সন
const splitNumberInt = (len, sum) => {
if (len <= 0) return [];
const base = Math.floor(sum / len);
const remainder = sum % len;
const result = new Array(len).fill(base);
for (let i = 0; i < remainder; i++) {
result[i]++;
}
return result;
};
console.log(splitNumberInt(5, 12)); // [3, 3, 2, 2, 2] (sum=12)
ব্যাখ্যা
- Float ভার্সন: সব উপাদান সমান (sum/len)
- Integer ভার্সন: বাকি অংশ প্রথম few উপাদানে বিতরণ
- Array.fill(): দ্রুত অ্যারে ইনিশিয়ালাইজেশন
উৎপাদন
[ 4.033333333333333, 4.033333333333333, ... (৩০টি) ]