हमारे पास पूर्णांकों का एक सेट है, और एक मान जिसे हमें सेट के योग से घटाना है। जैसे यहां,
[4, 5, 6, 7, 8] - 25
यदि हम हर संख्या से समान रूप से घटाते हैं, तो हमें मिलेगा -
[-1, 0, 1, 2, 3]
हालांकि, हम 0 से कम कोई संख्या नहीं चाहते। इसलिए, यदि हम ऐसा एल्गोरिदम लिख रहे होते, तो ऋणात्मक संख्याएं शेष संख्याओं में समान रूप से ओवरफ्लो होतीं, और अब हमारे पास होता -
[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 ]