Ejercicio: 3Eva_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
El problema se separa en sus partes principales.
Primero se revisa el número de veces que aparece cada número en el cuadrado. Luego se suma cada fila y columna, guardando los resultados en vectores.
La suma de las diagonales se las hace aparte pues solo se necesita mover un índice; la diagonal principal tiene el mismo índice en la fila y columna; y la diagonal segundaria, en cambio la columna es decreciente.
Se validan los resultados parciales con las condiciones para que sea mágico y se muestra el resultado
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2003_T2 Verificar un cuadrado mágico
# Propuesta: edelros@espol.edu.ec
import numpy as np
# INGRESO
n = int(input("tamaño cuadrado: "))
while (n>10):
n = int(input("tamaño cuadrado(n<10): "))
cuadrado = np.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)+"]: ")
# PROCEDIMIENTO
# verifica numeros repetidos
m = n*n
repetido = np.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 = np.zeros(n,dtype=int)
scolumna = np.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)
resultado del algoritmo
tamaño cuadrado: 3
cuadrado [1,1]: 4
cuadrado [1,2]: 9
cuadrado [1,3]: 2
cuadrado [2,1]: 3
cuadrado [2,2]: 5
cuadrado [2,3]: 7
cuadrado [3,1]: 8
cuadrado [3,2]: 1
cuadrado [3,3]: 6
El resultado es:
1
>>>
ejercicios resueltos Python mejo_it2003_t2 pdf
ejercicios resueltos Matlab mejo_it2003_t2 pdf