PHP Program to Check horizontal and vertical symmetry in binary matrix
Last Updated :
22 Jul, 2024
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
Explanation:
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:
PHP
<?php
// PHP program to find if
// a matrix is symmetric.
function 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.
for ($i = 0, $k = $N - 1;
$i < $N / 2; $i++,
$k--)
{
// Checking each cell of a column.
for ($j = 0; $j < $M; $j++)
{
// check if every cell is identical
if ($arr[$i][$j] != $arr[$k][$j])
{
$horizontal = false;
break;
}
}
}
// Checking for Vertical Symmetry.
// We compare first column with
// last column, second xolumn with
// second last column and so on.
for ($i = 0, $k = $M - 1;
$i < $M / 2; $i++,
$k--)
{
// Checking each cell of a row.
for ($j = 0; $j < $N; $j++)
{
// check if every cell is identical
if ($arr[$i][$j] != $arr[$k][$j])
{
$horizontal = false;
break;
}
}
}
if (!$horizontal && !$vertical)
echo "NO
";
else if ($horizontal && !$vertical)
cout << "HORIZONTAL
";
else if ($vertical && !$horizontal)
echo "VERTICAL
";
else echo "BOTH
";
}
// Driver Code
$mat = array(array (1, 0, 1),
array (0, 0, 0),
array (1, 0, 1));
checkHV($mat, 3, 3);
// This code is contributed by nitin mittal.
?>
Time Complexity: O(N*M).
Auxiliary Space: O(1) as it is using constant space for variables
Please refer complete article on Check horizontal and vertical symmetry in binary matrix for more details!
Similar Reads
How to Access and Print Matrix Element at Specific Position in PHP ? Accessing and printing elements at specific positions within a matrix is a fundamental operation in PHP when dealing with two-dimensional arrays. A matrix in PHP can be represented as an array of arrays, where each sub-array represents a row in the matrix. This article explores various approaches to
3 min read
How to Declare and Initialize 3x3 Matrix in PHP ? PHP, a widely used scripting language, is primarily known for its web development capabilities. However, it also offers a robust set of features to perform various other programming tasks, including the creation and manipulation of matrices. A matrix is a two-dimensional array consisting of rows and
3 min read
How to Calculate Determinant of a Matrix in PHP? Given a Matrix of size M*N, where N and M is an Integer, we need to Calculate calculate of a Matrix in PHP. Example: Input: [[1, 2],[2, 3]]Output: 6Explanation: (1*3)-(2*2)= 6-4= 2 There are several ways to find the determinant of the matrix in PHP which are as follows: Table of Content Using Recurs
4 min read
How to Find Multiplication of Two Matrices of any Size in PHP? Multiplying two matrices is a common operation in linear algebra. To multiply two matrices of any size in PHP, you can create a function that takes two matrices as input and returns their product. Below are the approaches to find the Multiplication of two Matrices of any size in PHP:Table of Content
4 min read
PHP | imageaffinematrixget() function The imageaffinematrixget() function is an inbuilt function in PHP which is used to get an affine transformation matrix. Affine is a geometric transformation operation involving matrices, often used in linear algebra and computer graphics.Syntax:Â Â array imageaffinematrixget( int $type, mixed $option
2 min read