Python Program to Check horizontal and vertical symmetry in binary matrix
Last Updated :
23 Dec, 2022
Given a 2D binary matrix of N rows and M columns. The task is to check whether the matrix is horizontal symmetric, vertical symmetric, or both. The matrix is said to be horizontal symmetric if the first row is the same as the last row, the second row is the same as the second last row, and so on. And the matrix is said to be vertical symmetric if the first column is the same as the last column, the second column is the same as the second last column, and so on. Print "VERTICAL" if the matrix is vertically symmetric, "HORIZONTAL" if the matrix is vertically symmetric, "BOTH" if the matrix is vertical and horizontal symmetric, and "NO" if not symmetric.
Examples:
Input: N = 3 M = 3
0 1 0
0 0 0
0 1 0
Output: Both
First and third row are same and also second row
is in middle. So Horizontal Symmetric.
Similarly, First and third column are same and
also second column is in middle, so Vertical
Symmetric.
Input:
0 0 1
1 1 0
0 0 1.
Output: Both
The idea is to use pointers indicating two rows (or columns) and compare each cell of both the pointed rows (or columns).
For Horizontal Symmetry, initialize one pointer i = 0 and another pointer j = N - 1.
Now, compare each element of i-th row and j-th row. Increase i by 1 and decrease j by 1 in each loop cycle. If at least one, not an identical element, is found, mark the matrix as not horizontal symmetric.
Similarly, for Vertical Symmetry, initialize one pointer i = 0 and another pointer j = M - 1.
Now, compare each element of i-th column and j-th column. Increase i by 1 and decrease j by 1 in each loop cycle. If at least one, not an identical element, is found, mark the matrix as not vertical symmetric.
Below is the implementation of the above idea:
Python3
# Python3 program to find if a matrix is symmetric.
MAX = 1000
def checkHV(arr, N, M):
# Initializing as both horizontal and vertical
# symmetric.
horizontal = True
vertical = True
# Checking for Horizontal Symmetry. We compare
# first row with last row, second row with second
# last row and so on.
i = 0
k = N - 1
while(i < N // 2):
# Checking each cell of a column.
for j in range(M):
# check if every cell is identical
if (arr[i][j] != arr[k][j]):
horizontal = False
break
i += 1
k -= 1
# Checking for Vertical Symmetry. We compare
# first column with last column, second column
# with second last column and so on.
i = 0
k = M - 1
while(i < M // 2):
# Checking each cell of a row.
for j in range(N):
# check if every cell is identical
if (arr[i][j] != arr[k][j]):
vertical = False
break
i += 1
k -= 1
if (not horizontal and not vertical):
print("NO")
elif (horizontal and not vertical):
print("HORIZONTAL")
elif (vertical and not horizontal):
print("VERTICAL")
else:
print("BOTH")
# Driver code
mat = [[1, 0, 1],[ 0, 0, 0],[1, 0, 1]]
checkHV(mat, 3, 3)
# This code is contributed by shubhamsingh10
Time Complexity: O(N*M).
Auxiliary Space: O(1)
Please refer complete article on Check horizontal and vertical symmetry in binary matrix for more details!
Similar Reads
Python Program to check if a matrix is symmetric A square matrix is said to be a symmetric matrix if the transpose of the matrix is the same as the given matrix. The symmetric matrix can be obtained by changing row to column and column to row. Examples: Input : 1 2 3 2 1 4 3 4 3Output : Yes Input : 3 5 8 3 4 7 8 5 3Output : No Method 1: A Simple s
3 min read
Python Program to check if matrix is lower triangular Given a square matrix and the task is to check the matrix is in lower triangular form or not. A square matrix is called lower triangular if all the entries above the main diagonal are zero. Examples: Input : mat[4][4] = {{1, 0, 0, 0}, {1, 4, 0, 0}, {4, 6, 2, 0}, {0, 4, 7, 6}};Output : Matrix is in l
2 min read
Python Program to check if matrix is upper triangular Given a square matrix and the task is to check the matrix is in upper triangular form or not. A square matrix is called upper triangular if all the entries below the main diagonal are zero. Examples: Input : mat[4][4] = {{1, 3, 5, 3}, {0, 4, 6, 2}, {0, 0, 2, 5}, {0, 0, 0, 6}}; Output : Matrix is in
2 min read
Python Program for Rotate a Matrix by 180 degree Given a square matrix, the task is that turn it by 180 degrees in an anti-clockwise direction without using any extra space. Examples : Input: 1 2 3 4 5 6 7 8 9 Output: 9 8 7 6 5 4 3 2 1Input: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 Output: 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1Python Program for Rotate a Matrix b
5 min read
Python Program to check Involutory Matrix Given a matrix and the task is to check matrix is an involutory matrix or not. Involutory Matrix: A matrix is said to be an involutory matrix if the matrix multiplies by itself and returns the identity matrix. The involutory matrix is the matrix that is its own inverse. The matrix A is said to be an
3 min read