s3Eva_IT2003_T2 Verificar un cuadrado mágico

Propuesta de solución en Python: py_pdf, también se incluye versión en matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Mejoramiento I Término 2003
# Tema 2. cuadrado mágico
# Propuesta: edelros@espol.edu.ec

import numpy

n=int(input("tamaño cuadrado: "))
while (n>10):
    n=int(input("tamaño cuadrado(n<10): "))
cuadrado=numpy.zeros(shape=(n,n),dtype=int)
for i in range(0,n,1):
    for j in range(0,n,1):
        cuadrado[i,j]=input("cuadrado ["+str(i+1)+","+str(j+1)+"]: ")

# verifica numeros repetidos
m=n*n
repetido=numpy.zeros(m+1,dtype=int)
masdeuno=0
for i in range(0,n,1):
    for j in range(0,n,1):
        k=cuadrado[i,j]
        repetido[k]=repetido[k]+1
        if (repetido[k]>1):
            masdeuno=k
#suma de filas y columnas
sfila=numpy.zeros(n,dtype=int)
scolumna=numpy.zeros(n,dtype=int)
for i in range(0,n,1):
    for j in range(0,n,1):
        sfila[i]=sfila[i]+cuadrado[i,j]
        scolumna[i]=scolumna[i]+cuadrado[j,i]
# Suma diagonales
sdiagonal=0
sdiagonal2=0
for i in range(0,n,1):
    sdiagonal=sdiagonal+cuadrado[i,i]
    sdiagonal2=sdiagonal2+cuadrado[i,n-1-i]
# verifica condiciones magico
magico=1
if (masdeuno>0):
    magico=0
if not(sdiagonal==sdiagonal2):
    magico=0
for i in range(0,n,1):
    if not(sdiagonal==sfila[i]):
        magico=0
    if not(sdiagonal==scolumna[i]):
        magico=0

#Salida
print("El resultado es:")
print(magico)