Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

พลิกเมทริกซ์ในแนวนอนแล้วกลับด้านโดยใช้ JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ไบนารี 2 มิติ arr (อาร์เรย์ที่ประกอบด้วยเพียง 0 หรือ 1) เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันของเราควรพลิกเมทริกซ์ในแนวนอนก่อน จากนั้นจึงกลับเมทริกซ์ที่ได้ผลลัพธ์

การพลิกเมทริกซ์ในแนวนอนหมายความว่าแต่ละแถวของเมทริกซ์จะกลับด้าน ตัวอย่างเช่น การพลิก [1, 1, 0] ในแนวนอนจะทำให้ได้ [0, 1, 1]

ในการกลับเมทริกซ์หมายความว่า 0 แต่ละตัวจะถูกแทนที่ด้วย 1 และแต่ละ 1 จะถูกแทนที่ด้วย 0 ตัวอย่างเช่น การกลับค่า [0, 1, 1] ส่งผลให้เป็น [1, 0, 0]

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ

ป้อนข้อมูล

const arr = [
   [1, 1, 0],
   [1, 0, 1],
   [0, 0, 0]
];

ผลผลิต

const output = [
   [1,0,0],
   [0,1,0],
   [1,1,1]
];

คำอธิบายผลลัพธ์

ก่อนอื่นเราย้อนกลับแต่ละแถว -

[[0,1,1],[1,0,1],[0,0,0]]

จากนั้น เรากลับเมทริกซ์ −

[[1,0,0],[0,1,0],[1,1,1]]

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [
   [1, 1, 0],
   [1, 0, 1],
   [0, 0, 0]
];
const flipAndInvert = (arr = []) => {
   const invert = n => (n === 1 ? 0 : 1)
   for(let i = 0; i < arr.length; i++) {
      for(let j = 0; j < arr[i].length / 2; j++) {
         const index2 = arr[i].length - 1 - j
         if(j === index2) {
            arr[i][j] = invert(arr[i][j])
         } else {
            const temp = arr[i][j]
            arr[i][j] = arr[i][index2]
            arr[i][index2] = temp
            arr[i][j] = invert(arr[i][j])
            arr[i][index2] = invert(arr[i][index2])
         }
      }
   }
};
flipAndInvert(arr);
console.log(arr);

ผลลัพธ์

[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]