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

หาผลรวมที่เป็นไปได้ทั้งหมด (บวกและลบ) ของ n อาร์กิวเมนต์ใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์กิวเมนต์จำนวนเท่าไรก็ได้ (ทั้งหมดเป็นชนิด Number) ฟังก์ชันควรคำนวณผลรวมที่เป็นไปได้ทั้งหมดของการบวกและลบ

เช่น ถ้าอาร์กิวเมนต์คือ 1, 2, 3 ผลรวมที่เป็นไปได้ทั้งหมดคือ:

1 + 2 + 3
1 - 2 - 3
1 + 2 - 3
1 - 2 + 3

สุดท้าย ฟังก์ชันควรคืนค่าผลรวมที่ใกล้เคียงกับ 0 มากที่สุด ในกรณีนี้คำตอบคือ 0

ตัวอย่าง

const findSmallestPositive = (...arr) => {
  let set = new Set([Math.abs(arr[0])]);
  for (let i = 1; i < arr.length; i++){
    const secondSet = new Set;
    for (let d of Array.from(set)){
      secondSet.add(Math.abs(d + arr[i]))
      secondSet.add(Math.abs(d - arr[i]))
    };
    set = secondSet;
  };
  return Math.min(...Array.from(set))
};
console.log(findSmallestPositive(5,3))
console.log(findSmallestPositive(1,2,3))
console.log(findSmallestPositive(1,2,3,5))

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ดังนี้:

2 0 1