In this HackerEarth Roy and Symmetric Logos problem solution, Roy likes Symmetric Logos.

How to check whether a logo is symmetric?
Align the center of logo with the origin of Cartesian plane. Now if the colored pixels of the logo are symmetric about both X-axis and Y-axis, then the logo is symmetric.

You are given a binary matrix of size N x N which represents the pixels of a logo.
1 indicates that the pixel is colored and 0 indicates no color.

For instance: Take a 5x5 matrix as follows:

01110
01010
10001
01010
01110


HackerEarth Roy and Symmetric Logos problem solution


HackerEarth Roy and Symmetric Logos problem solution.

def check_about_x_axis(n, matrix):
    for i in xrange(n):
        j = n-i-1
        for p in xrange(n):
            if matrix[i][p] != matrix[j][p]:
                return 0
    return 1

def check_about_y_axis(n, matrix):
    for i in xrange(n):
        j = n-i-1
        for p in xrange(n):
            if matrix[p][i] != matrix[p][j]:
                return 0
    return 1

def roy_and_symmetric_logos():
    t = input()
    for tt in xrange(t):
        n = input()
        matrix = []
        for i in xrange(n):
            s = raw_input()
            tmp = list(s)
            matrix.append(tmp)
        if check_about_y_axis(n,matrix) and check_about_x_axis(n,matrix):
            print "YES"
        else:
            print "NO"
roy_and_symmetric_logos()