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

การดำเนินการยกกำลังกับอาร์เรย์ตัวเลขใน JavaScript


ปัญหา

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