Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript có trong mảng nhị phân 2-D, arr, (một mảng chỉ bao gồm 0 hoặc 1), làm đối số đầu tiên và duy nhất.
Trước tiên, hàm của chúng ta nên lật ma trận theo chiều ngang, sau đó đảo ngược nó và trả về ma trận kết quả.
Để lật ma trận theo chiều ngang có nghĩa là mỗi hàng của ma trận được đảo ngược. Ví dụ:lật [1, 1, 0] theo chiều ngang dẫn đến [0, 1, 1].
Đảo ngược ma trận có nghĩa là mỗi 0 được thay bằng 1 và mỗi 1 được thay bằng 0. Ví dụ:đảo [0, 1, 1] dẫn đến [1, 0, 0].
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const arr = [ [1, 1, 0], [1, 0, 1], [0, 0, 0] ];
Đầu ra
const output = [ [1,0,0], [0,1,0], [1,1,1] ];
Giải thích đầu ra
Đầu tiên, chúng tôi đảo ngược từng hàng -
[[0,1,1],[1,0,1],[0,0,0]]
Sau đó, chúng tôi đảo ngược ma trận -
[[1,0,0],[0,1,0],[1,1,1]]
Ví dụ
Sau đây là mã -
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);
Đầu ra
[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]