Un cuadrado mágico es una disposición de números naturales en una tabla cuadrada, de modo que las sumas de cada columna, de cada fila y de cada diagonal son iguales.
Los cuadrados mágicos más populares son aquellos que tienen los números consecutivos desde el 1 hasta \(n^2\), donde \(n\) es el número de filas y de columnas del cuadrado.
Por ejemplo, el siguiente es un cuadrado mágico con \(n = 4\). Todas sus filas, columnas y diagonales suman 34:
Escriba una función que reciba un arreglo cuadrado de enteros de \(n\times n\), e indique si está conformado por los números consecutivos desde 1 hasta \(n^2\):
>>> from numpy import array
>>> consecutivos(array([[3, 1, 5],
... [4, 7, 2],
... [9, 8, 6]]))
True
>>> consecutivos(array([[3, 1, 4],
... [4, 0, 2],
... [9, 9, 6]]))
False
Escriba una función que reciba un arreglo e indique si se trata o no de un cuadrado mágico:
>>> es_magico(array([[3, 1, 5],
... [4, 7, 2],
... [9, 8, 6]]))
False
>>> es_magico(array([[2, 7, 6],
... [9, 5, 1],
... [4, 3, 8]]))
True