Check if matrix can be converted to another matrix by transposing square sub | PHP implementation of the approach ; Function that returns true if matrix1 can be converted to matrix2 with the given operation ; Traverse all the diagonals starting at first column ; Traverse in diagonal ; Store the diagonal elements ; Move up ; Sort the elements ; Check if they are same ; Traverse all the diagonals starting at last row ; Traverse in the diagonal ; Store diagonal elements ; Sort all elements ; Check for same ; If every element matches ; Driver code
< ? php $ n = 3 ; $ m = 3 ; function check ( $ a , $ b ) { global $ n , $ m ; for ( $ i = 0 ; $ i < $ n ; $ i ++ ) { $ v1 = array ( ) ; $ v2 = array ( ) ; $ r = $ i ; $ col = 0 ; while ( $ r >= 0 && $ col < $ m ) { array_push ( $ v1 , $ a [ $ r ] [ $ col ] ) ; array_push ( $ v2 , $ b [ $ r ] [ $ col ] ) ; $ r -- ; $ col ++ ; } sort ( $ v1 ) ; sort ( $ v2 ) ; for ( $ i = 0 ; $ i < count ( $ v1 ) ; $ i ++ ) { if ( $ v1 [ $ i ] != $ v2 [ $ i ] ) return false ; } } for ( $ j = 1 ; $ j < $ m ; $ j ++ ) { $ v1 = array ( ) ; $ v2 = array ( ) ; $ r = $ n - 1 ; $ col = $ j ; while ( $ r >= 0 && $ col < $ m ) { array_push ( $ v1 , $ a [ $ r ] [ $ col ] ) ; array_push ( $ v2 , $ b [ $ r ] [ $ col ] ) ; $ r -- ; $ col ++ ; } sort ( $ v1 ) ; sort ( $ v2 ) ; for ( $ i = 0 ; $ i < count ( $ v1 ) ; $ i ++ ) { if ( $ v1 [ $ i ] != $ v2 [ $ i ] ) return false ; } } return true ; } $ a = array ( array ( 1 , 2 , 3 ) , array ( 4 , 5 , 6 ) , array ( 7 , 8 , 9 ) ) ; $ b = array ( array ( 1 , 4 , 7 ) , array ( 2 , 5 , 6 ) , array ( 3 , 8 , 9 ) ) ; if ( check ( $ a , $ b ) ) echo " Yes " ; else echo " No " ; ? >