Python - cuadro mágico

 
Vista:
sin imagen de perfil

cuadro mágico

Publicado por jose (9 intervenciones) el 13/09/2022 23:36:14
Un cuadrado mágico es una matriz cuadrada en la que la suma de los valores por columnas,
filas y diagonales principales es la misma. Escriba un programa que lea N × N valores en
una matriz cuadrada de N filas y N columnas, e imprima si la matriz representa un cuadrado
mágico.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder
sin imagen de perfil

cuadro mágico

Publicado por Sergio (1 intervención) el 02/12/2022 23:02:36
m = [[11,24,7,20,3],[4,12,25,8,16],[17,5,13,21,9],[10,18,1,14,22],[23,6,19,2,15]]
l = len(m)
sumas = []
for i in m:
sumas.append(i)

for j in range(0,l):
columna = []
for h in range(0,l):
columna.append(m[h][j])
sumas.append(columna)

diagonal = []
for j in range(0,l):
diagonal.append(m[j][j])
sumas.append(diagonal)

diagonalinversa = []
a = 0
for j in range(l-1,-1,-1):
diagonalinversa.append(m[j][a])
a += 1
sumas.append(diagonalinversa)
print(sumas)

comprobacion = []
for i in sumas:
comprobacion.append(sum(i))
print(comprobacion)

if len(set(comprobacion)) == 1:
print("Es un cuadrado mágico")
else:
print("No es un cuadrado mágico")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-2
Comentar
sin imagen de perfil

cuadro mágico

Publicado por Dio (25 intervenciones) el 06/12/2022 15:04:56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Función que verifica si una matriz es un cuadrado mágico
def es_cuadrado_magico(matriz):
  # Obtenemos el número de filas y columnas de la matriz
  n = len(matriz)
 
  # Función que calcula la suma de las filas, columnas o diagonales de una matriz
  def suma(matriz, tipo):
    if tipo == "filas":
      # Calculamos la suma de cada fila
      return [sum(fila) for fila in matriz]
    elif tipo == "columnas":
      # Calculamos la suma de cada columna
      return [sum(matriz[i][j] for i in range(n)) for j in range(n)]
    elif tipo == "diagonal principal":
      # Calculamos la suma de la diagonal principal
      return sum(matriz[i][i] for i in range(n))
    elif tipo == "diagonal secundaria":
      # Calculamos la suma de la diagonal secundaria
      return sum(matriz[i][n-1-i] for i in range(n))
 
  # Verificamos si todas las sumas son iguales
  if all(x == suma(matriz, "filas")[0] for x in suma(matriz, "filas") + suma(matriz, "columnas") + [suma(matriz, "diagonal principal"), suma(matriz, "diagonal secundaria")]):
    return True
  else:
    return False
 
 
# Prueba de la función
matriz = [[4,9,2],[3,5,7],[8,1,6]]
if es_cuadrado_magico(matriz):
  print("La matriz es un cuadrado mágico.")
else:
  print("La matriz no es un cuadrado mágico.")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar