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

การหาผลรวมสลับเครื่องหมายของอาร์เรย์ 2 มิติใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ 2 มิติขนาด m×n ของตัวเลขที่มีจำนวนแถวและคอลัมน์เท่ากัน (square matrix) สำหรับอาร์เรย์นี้ ฟังก์ชันควรคำนวณและคืนค่าผลรวมต่อไปนี้:

$\sum_{i=1}^m \sum_{j=1}^n (-1)^{i+j} a_{ij}$

ตัวอย่าง

โค้ดตัวอย่างด้านล่าง:

const arr = [
  [4, 6, 3],
  [1, 8, 7],
  [2, 5, 9]
];
const alternateSum = (arr = []) => {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      const multiplier = (i + j) % 2 === 0 ? 1 : -1;
      sum += (multiplier * arr[i][j]);
    }
  }
  return sum;
};
console.log(alternateSum(arr));

ผลลัพธ์

7

คำอธิบายเพิ่มเติม

นี่คือการคำนวณ determinant แบบ cofactor expansion สำหรับ 3×3 แต่ไม่ได้คูณด้วย minor ผลรวมสลับเครื่องหมาย (+ - + / - + - / + - +) สำหรับเมทริกซ์ตัวอย่าง: +4 -6 +3 -1 +8 -7 +2 -5 +9 = 7