# performance – Lo Shu Magic Square (Python)

I wrote a python program to find if a matrix is a magic square or not. It works, but I can’t help feeling like I may have overcomplicated the solution. I have seen other implementations that were a lot shorter, but I was wondering how efficient/inefficient my code is and how I could improve it and/or shorten it to achieve the result I am looking for.

``````def main():

matrix = ((4,9,2),
(3,5,7),
(8,1,6))

result = loShu(matrix)

print(result)

def loShu(matrix):

i = 0
j = 0

for i in range(0, len(matrix)):
for j in range(0, len(matrix(j))):
if ((matrix(i)(j) < 1) or (matrix(i)(j) > 9)):
return ("This is not a Lo Shu Magic Square - one of the numbers is invalid")

row1 = matrix(0)(0) + matrix(0)(1) + matrix(0)(2)
row2 = matrix(1)(0) + matrix(1)(1) + matrix(1)(2)
row3 = matrix(2)(0) + matrix(2)(1) + matrix(2)(2)

ver1 = matrix(0)(0) + matrix(1)(0) + matrix(2)(0)
ver2 = matrix(0)(1) + matrix(1)(1) + matrix(2)(1)
ver3 = matrix(0)(2) + matrix(1)(2) + matrix(2)(2)

diag1 = matrix(0)(0) + matrix(1)(1) + matrix(2)(2)
diag2 = matrix(0)(2) + matrix(1)(1) + matrix(2)(0)

checkList = (row1,row2,row3,ver1,ver2,ver3,diag1,diag2)

temp = checkList(0)

for x in range (0, len(checkList)):
if checkList(x) != temp:
return ("This is not a Lo Shu Magic Square")

return ("This is a Lo Shu Magic Square")

main()
``````