มีชุดตัวเลขและค่าที่ต้องลบจากผลรวม ต้องกระจายการลบอย่างเท่าเทียม แต่ไม่ให้ค่าใดติดลบ ค่าลบที่เกินจะกระจายไปยังค่าบวกที่เหลืออย่างเท่าเทียม
ตัวอย่าง: [4,5,6,7,8] - 25 → [0, 0, 0.666..., 1.666..., 2.666...]
ตัวอย่างโค้ด
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 ]