เราต้องเขียนฟังก์ชัน 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