ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็ม arr ความยาวเป็นเลขคู่ สมมติตัวเลข num โดยที่:
num = (arr[0]² + arr[1]²) * (arr[2]² + arr[3]²) * … * (arr[n-2]² + arr[n-1]²)
โดย n คือความยาวอาร์เรย์ ฟังก์ชันควรหาและคืนค่าอาร์เรย์ 2 ตัวเลข [A, B] ที่ทำให้:
A² + B² = num
เช่น ถ้าอาร์เรย์คือ [1, 2, 3, 4] แล้ว num = (1+4)*(9+16) = 125 เอาต์พุทควรเป็น [2, 11] เพราะ 2² + 11² = 125
ตัวอย่าง
โค้ดตัวอย่างดังนี้:
const arr = [1, 2, 3, 4];
const findMatchingSumArray = (arr = []) => {
let squaredSum = 1;
for(let i = 0; i < arr.length - 1; i += 2){
const curr = arr[i];
const next = arr[i + 1];
squaredSum *= (Math.pow(curr, 2) + Math.pow(next, 2));
};
for(let k = 0; k * k < squaredSum; k++){
for(let j = 0; (k * k) + (j * j) <= squaredSum; j++){
if((k * k) + (j * j) === squaredSum){
return [k, j];
};
};
};
return [];
};
console.log(findMatchingSumArray(arr));
ผลลัพธ์
ผลลัพธ์ในคอนโซล:
[2, 11]