আমাদের একটি পূর্ণসংখ্যার সেট আছে, এবং একটি মান যা সেটের যোগফল থেকে বিয়োগ করতে হবে।
যেমন এখানে,
[4, 5, 6, 7, 8] − 25
যদি আমরা প্রতিটি সংখ্যা থেকে সমান ভাগে বিয়োগ করি, পাব −
[-1, 0, 1, 2, 3]
কিন্তু আমরা ০-এর চেয়ে ছোট কোনো সংখ্যা চাই না।
সুতরাং, যদি আমরা এই 작업을 করার একটি অ্যালগরিদম লিখি, নেগেটিভ সংখ্যাগুলো সমানভাবে বাকি পজিটিভ সংখ্যাগুলোর মধ্যে ওভারফ্লো করবে, এবং এখন আমরা পাব −
[0, 0, 1, 2, 3] − 1
ফলস্বরূপ সেট হবে −
[0, 0, 1 − 0.333, 2 − 0.333, 3 − 0.333]
লক্ষ্য করুন যে এটি ঠিক সেই ফলাফল যা আমরা চাই।
সব নেগেটিভ মান সমানভাবে বাকি পজিটিভ মানগুলোর মধ্যে ওভারফ্লো করছে।
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে সংখ্যার একটি অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি সাম নম্বর নেয়।
ফাংশনটি তারপর সমানভাবে বিয়োগ করা এবং বিতরণ করা অ্যারেটি গণনা করে ফেরত দেবে।
উদাহরণ
এটির জন্য কোড হবে −
const arr = [4, 5, 6, 7, 8]; const subtract = (arr, sum) => { return arr.map((el, index, array) => { const rem = array.length − index const avg = sum / rem; const toSubtract = Math.min(avg, el); sum −= toSubtract; return el − toSubtract; }); }; console.log(subtract(arr, 25));আউটপুট
কনসোলে আউটপুট হবে −
[ 0, 0, 0.666666666666667, 1.666666666666666, 2.666666666666666 ]