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