Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การลบค่าออกจากชุดตัวเลขแบบไม่ให้ค่าติดลบ (Non-negative Set Subtraction) ใน JavaScript

มีชุดตัวเลขและค่าที่ต้องลบจากผลรวม ต้องกระจายการลบอย่างเท่าเทียม แต่ไม่ให้ค่าใดติดลบ ค่าลบที่เกินจะกระจายไปยังค่าบวกที่เหลืออย่างเท่าเทียม

ตัวอย่าง: [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 ]