Está en la página 1de 3

Tema de la clase del 4 de mayo: Matriz cuadrada de orden par de N filas por N columnas, para este ejemplo N = 6

Programa final en Python Cuadrado Mágico (patrón 4)

#
from random import randint
n = randint(3,10);
if n%2==0:n += 1
magico = [[int(0) for j in range(n)] for i in range(n)]
fils=[int(0) for k in range(n)];cols=[int(0) for k in range(n)];
dpal=[int(0) for k in range(1)];dsec=[int(0) for k in range(1)];
i = 0;j = n//2;k = 1;magico[i][j] = k
for k in range(2,n*n+1):
i -= 1;j += 1
if i<0:i = n-1
if j>n-1:j = 0
if magico[i][j]==0:
magico[i][j] = k
else:
i +=1;j -= 1
if i>n-1:i = 0
if j<0:j = n-1
i +=1;magico[i][j] = k
for i in range(n):
for j in range(n):
print(" %3d"%magico[i][j], end="")
print(" ")
for i in range(n):
for j in range(n):
fils[i] += magico[i][j];cols[j] +=magico[i][j]
if i == j:dpal[0] += magico[i][j]
if i+j == n-1:dsec[0] += magico[i][j]
sumas=fils+cols+dpal+dsec; # print(sumas)
# Versión 1
magica=True
for j in range(1,len(sumas)):
if sumas[j] != sumas[0]:
magica=False;break
if magica:
print("\n .. SÍ es mágica")
else:
print("\n .. NO es mágica")
# Versión 2 más compacta
if fils==cols and dpal[0]==fils[0] and dsec[0]==cols[0]:
print("\n .. SÍ es mágica")
else:
print("\n .. NO es mágica")
Algoritmo Matriz0_I_2023
Definir i,j,suma, t, matriz,N,M Como Entero
N=5;M=7 /// N filas x M columnas
Dimension t(M), matriz(N,M)
Para i=0 hasta N-1 hacer
Para j=0 hasta M-1 hacer
matriz[i,j] = i+j
FinPara
FinPara
Para i=0 hasta N-1 hacer
Escribir Sin Saltar" "
Para j=0 hasta M-1 hacer
Escribir Sin Saltar" ", matriz[i,j]
FinPara
Escribir""
FinPara
suma = 0
Para j = 0 hasta M-1 hacer
para i = 0 hasta N-1 hacer
suma = suma+matriz[i,j]
finpara
t[j]=suma
suma=0
Escribir Sin Saltar " ",t[j]
finpara
Escribir""
FinAlgoritmo
///_____________________________

# n filas x m columnas
n = 5;m = 7
t = [int() for k in range(m)]
matriz = [[int() for j in range(m)] for i in range(n)]
for i in range(n): # recorriendo la matriz por filas
for j in range(m):
matriz[i][j] = i+j
print(matriz)
for i in range(n):# recorriendo la matriz por filas
for j in range(m):
print("%5d"%matriz[i][j], end="")
print("")
suma = 0
for j in range(m):# recorriendo la matriz por columnas
for i in range(n):
suma = suma+matriz[i][j]
t[j] = suma;suma = 0
for k in range(m):
print("%4d"%t[k], end="")
print("")

También podría gustarte