Tabla ASCII
Dígitos: [48 .. 57]; mayúsculas: [65 .. 90]; minúsculas: [97 .. 122]
(Para comprender mejor este documento, debe haber visto la presentación: Intro_Matrices.ppt)
Recuerden que “PseInt” quiere decir Pseudo-Interpretador y que “PseInt” utiliza seudolenguaje y
que para el Curso, lo hemos configurado para trabajar con subíndices que se numeran desde 0.
(SEGÚN CONFIGURACIÓN INICIAL)
Sobre el signo compuesto <- (un signo menor seguido de un menos).
En las imágenes de los siguientes programas ilustrados sobre matrices, ustedes encontrarán el
siguiente signo compuesto y nativo de “PseInt” <-. Dicho signo es equivalente al signo igual (=). Por
ejemplo la siguiente expresión “PseInt”: Para i <- 0 Hasta 2 con Paso 1 Hacer, es equivalente a la
siguiente expresión: Para i = 0 Hasta 2 con Paso 1 Hacer, tanto el signo = como <-, significan,
asignar a una variable el valor de una expresión.
Actividad: transcriba y ejecute cada programa “PseInt”, paso a paso, en las imágenes que hay a
continuación, y relaciónelos con el documento: Intro_Matrices.ppt
Nota: para los dos programas que siguen a continuación (Matriz_03 y Matriz_04), deben
modificar, donde aparece la instrucción “Fin Para” por “FinPara” (en las imágenes aparecen
separadas, deben estar seguidas)
Una versión PYTHON 3.x
# arreglo t inicializado con ceros (0)
t = [int(0) for i in range(3)]
print(" estado inicial t: ",t)
# arreglo bidimensional matriz inicializado con ceros (0)
matriz = [[int(0) for i in range(3)] for j in range(3)]
print(" estado inicial matriz: ",matriz)
for i in range(3):
for j in range(3):
matriz[i][j] = i+j
suma = 0
for j in range(3):
for i in range(3):
suma = suma+matriz[j][i]
t[j] = suma
suma = 0
print(" .. ",t[0]," ",t[1]," ",t[2])
Actividad: Realizar un programa que lea por pantalla, la dimensión de una matriz
S (número de filas: N y número de columnas: M) y los datos de la matriz, e
imprima la matriz en pantalla (dimensión de N x M; matriz S)
Taller resuelto:
Repetir el programa anterior utilizando la función “azar” para Filas: N (5<= N <= 15); para
Columnas: M (7<= M <=21), con N != M; Elementos de la matriz: S [i,j] (-24.99 <= S[i,j] <= +24.99).
Resultados a presentar: N, M y la matriz S tal como se construye (por filas) y luego presentarla por
columnas
Algoritmo Matriz5_I_2022
/// N número de filas; M número de columnas; S matriz
/// N en el rango [5 .. 15], M en el rango [7 .. 21] y N != M;
/// S[i,j] en el rango [-24.99 .. +24.99]
Definir i,j,N,M Como Entero
Definir S Como Real
Dimension S[15,21]
N=azar(11)+5;M=azar(15)+7;
Mientras N=M Hacer
N=azar(11)+5;M=azar(15)+7;
FinMientras
Escribir""
escribir" ..N:",N," ..M:",M;escribir""
/// Se construye la matriz por filas
para i=0 hasta N-1 Hacer
para j=0 hasta M-1 Hacer
S[i,j]=(azar(4999)-2499)/100 ///min:-24.99; max:24.99
FinPara
FinPara
/// Se recorre la matriz por filas tal como se creó
Escribir" matriz S creada por filas";Escribir""
para i=0 hasta N-1 Hacer
para j=0 hasta M-1 Hacer
escribir sin saltar " ",S[i,j]
FinPara
Escribir""
FinPara
Escribir""
/// Ahora se recorre la matriz por columnas
Escribir" matriz S recorrida por columnas";Escribir""
para j=0 hasta M-1 Hacer
para i=0 hasta N-1 Hacer
escribir sin saltar " ",S[i,j]
FinPara
Escribir""
FinPara
Escribir""
FinAlgoritmo
Recorriendo un vector en dos sentidos
Funcion EscribaV1(x,m)
Definir i Como Entero
Para i=0 hasta m-1 Hacer
Escribir Sin Saltar" ",x[i]
FinPara
Escribir""
FinFuncion
Funcion EscribaV2(y,l)
Definir j Como Entero
Para j=l-1 hasta 0 Hacer
Escribir Sin Saltar" ",y[j]
FinPara
Escribir""
FinFuncion
Algoritmo RecorrerVector
Definir i, N, S Como Entero
Dimension S[99]
N=azar(11)+10 ///min:10; max:20
Para i=0 hasta N-1 Hacer
S[i]=i+2*i
FinPara
EscribaV1(S,N)
EscribaV2(S,N)
FinAlgoritmo
Sobre cuadrados mágicos:
En las siguientes páginas encontrarán unas matrices denominados “cuadrados mágicos” (matrices
cuadradas de 3 filas, por 3 columnas). En todos los casos al sumar por las filas, por las columnas o
por las diagonales (ya sea por la principal o por la secundaria), la suma da 15 (quince, aquí
denominado “número mágico”). Cuando nos encontremos en el siguiente “meeting” de “Google
Met”, explicaré las condiciones y los mecanismos para hacerlo. Por ahora observen y analicen las
matrices cuadradas presentadas a continuación y traten de hallar el mecanismo y las condiciones
necesarias para crearlas. Así mismo quedan unos programas (para ejecutarlos varias veces, paso a
paso y observar sus resultados), junto con otras gráficas que “tratan” de explicar “algo”. Analicen,
investiguen y concluyan para que sirven.
Sugerencia: Usen papel y lápiz y “formen” sus cuadrados mágicos siguiendo “algún” patrón
Grafica de Matriz cuadrada de NxM, donde el número de N filas es igual al número M columnas,
señalando la diagonal principal (P1) y la diagonal secundaria (S1)
Condiciones del Curso de Programación de Computadores: solo se trabajaran posibles matrices de
cuadrados mágicos de orden impar con las especificaciones que se establezcan más adelante.
“Cuadrados mágicos de orden par” no serán tratados en el curso. Se deja a consideración del
estudiante investigar sobre Cuadrados mágicos de orden par.
Cuatro Cuadrados mágicos de orden impar
8 1 6
3 5 7
4 9 2
6 1 8
7 5 3
2 9 4
2 9 4
7 5 3
6 1 8
4 9 2
3 5 7
8 1 6
Para su Construcción hay muchos patrones
3 5 7
4 9 2
8 1 6
(se devuelve y baja)
5 3
2 4
1 8
7 5 3
2 9 4
6 1 8
Algoritmo Magico_0
Definir magico,i,j,k,n como entero
Dimension magico[11,11]
n=azar(8)+3;
Si n % 2=0 entonces
n=n+1 /// impar
FinSi
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
magico[i,j]=0
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
Escribir " "
i=0
j=trunc(n/2)
k=1
magico[i,j]=k /// colocando el 1 en la mitad de la primera fila
Escribir " i j k : ",i," ",j," ",k,” primera”
Para k<-2 Hasta n*n Con Paso 1 Hacer
i=i-1;j=j+1 ///subiendo I-D
Si i<0 Entonces
i=n-1
FinSi
Si j>n-1 Entonces
j=0
FinSi
Si magico[i,j]=0 Entonces
magico[i,j]=k
Sino
i=i+1;j=j-1 /// bajando D-I
Si i>n-1 Entonces
i=0
FinSi
Si j<0 Entonces
j=n-1
FinSi
i=i+1 /// diente: dv+
magico[i,j]=k
FinSi
Escribir " i j k : ",i," ",j," ",k
FinPara
Escribir " "
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Para j<-0 Hasta n-1 Con Paso 1 Hacer
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
FinAlgoritmo
Solución PYTHON 3.x
from random import randint
magico = [[int() for i in range(11)] for j in range(11)]
print(magico,"\n")
n = randint(3,10)
while n%2==0:
n = n+1
for i in range(n):
for j in range(n):
print(magico[i][j]," ", end="")
print(" ")
print("\n")
i = 0;j = int(n/2);k = 1;magico[i][j] = k
print(" i, j, k : ",i," ",j," ",k)
for k in range(2,n*n+1):
i = i-1;j = 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 = i+1;j = j-1
if i>n-1:
i=0
if j<0:
j = n-1
i = i+1
magico[i][j] = k
print(" i, j, k : ",i," ",j," ",k)
print(" ")
for i in range(n):
for j in range(n):
print(magico[i][j]," ", end="")
print(" ")
Cuadrados mágicos de orden impar
4 3
8 7
Algoritmo Magico_1_I_2022
/// Patrón 4
Definir magico,i,j,k,n como entero
Dimension magico[11,11]
n=azar(8)+3; /// min:3; max:11
si n % 2=0 entonces
n=n+1 /// impar
FinSi
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Escribir sin saltar" .. "
Para j<-0 Hasta n-1 Con Paso 1 Hacer
magico[i,j]=0
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
Escribir " "
i=0
j=trunc(n/2)
k=1
magico[i,j]=k /// colocando el 1 en la mitad de la primera fila
Escribir " .. i j k : ",i," ",j," ",k, “ .. primero”
Para k<-2 Hasta n*n Con Paso 1 Hacer
i=i-1;j=j+1 /// subiendo I-D
Si i<0 Entonces
i=n-1
FinSi
Si j>n-1 Entonces
j=0
FinSi
Si magico[i,j]=0 Entonces
magico[i,j]=k
Sino
i=i+1;j=j-1 /// bajando D-I
Si i>n-1 Entonces
i=0
FinSi
Si j<0 Entonces
j=n-1
FinSi
i=i+1 /// diente: dv+
magico[i,j]=k
FinSi
Escribir " .. i j k : ",i," ",j," ",k
FinPara
Escribir " .. matriz mágica impar de:",n,"x",n
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Escribir sin saltar" .. "
Para j<-0 Hasta n-1 Con Paso 1 Hacer
si magico[i,j] <10 Entonces
Escribir Sin Saltar"0"
FinSi
si magico[i,j] <100 Entonces
Escribir Sin Saltar"0"
FinSi
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
FinAlgoritmo
Una versión Python modificando el anterior programa migrado desde PseInt (observe el uso de
una lista con sub-listas sin tipo de datos “None” de PYTHON)
from random import randint
n = randint(3,9)
while n%2==0:
n = n+1
magico = [[None for i in range(n)] for j in range(n)] # una lista de sub-listas, sin tipo de dato
print(magico) # Observar los resultados de esta línea
i = 0; j = int(n/2); k = 1; magico[i][j] = k
print(" .. i, j, k :",i,"",j,"",k)
for k in range(2,n*n+1):
i = i-1; j = j+1
if i<0:
i = n-1
if j>n-1:
j=0
if magico[i][j]==None: # examine esta línea y compare contra PseInt
magico[i][j] = k
else:
i = i+1; j = j-1
if i>n-1:
i=0
if j<0:
j = n-1
i = i+1
magico[i][j] = k
print(" .. i, j, k :",i,"",j,"",k)
print(" ")
for i in range(n):
print(" .. ",end="")
for j in range(n):
if magico[i][j]<10:
print(0,end="")
print(magico[i][j],"", end="")
print(" ")
Patrón 1 (matriz mágica)
Patrón 16 (matriz no mágica)
Número mágico o suma mágica de un Cuadrado mágico: suma de los términos de la
serie colocada en la matriz o cuadrado mágico
Un video ilustrativo: https://www.youtube.com/watch?v=QQ9FmTdMGjA
Condiciones del Curso de Programación de Computadores: solo para posibles
cuadrados mágicos de orden impar
Se coloca en la mitad de la [primera / última] / [fila /columna]
(También podemos colocar el primer número en cualquier posición inicial y llenar la matriz)
Se recorre una diagonal en forma de Sierra [Ascendente / Descendente] [Der. Izq. / Izq. Der.]
[Diente Vertical / [Subiendo /Bajando]] / [Diente Horizontal / [Der. Izq. / Izq. Der.]]
Matrices ejemplos, hechas con patrones tipo “Sierra” que pueden ser o no “Mágicas”
Observación: Cuando se llena una matriz cuadrada, con una serie aritmética, se puede realizar con
cualquiera de los 16 (dieciséis) patrones “sierra”, ilustrados en la gráfica. Dichos patrones, se
pueden aplicar tanto para matrices de orden impar como matrices de orden par. En el caso de las
matrices de orden par, las matrices obtenidas NO son mágicas, a diferencia de las matrices de
orden impar con las cuales se obtienen matrices mágicas, de acuerdo al orden de la matriz (ver
más adelante programa que calcula el número de matrices mágicas).
Algoritmo Patrones_diente_un_paso_para_magicas_V2
Definir diagonal, diente,p Como Caracter
/// p: tipo de patrones según apuntes
Dimension diagonal[4], diente[4],p[17]
/// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/// 11 4 12 3 7 16 8 15 2 1 9 10 14 13 5 6
p[0]=" 0";p[1]="11";p[2]=" 4";p[3]="12";p[4]=" 3";p[5]=" 7";p[6]="16";p[7]="
8";p[8]="15";
p[9]=" 2";p[10]=" 1";p[11]=" 9";p[12]="10";p[13]="14";p[14]="13";p[15]=" 5";p[16]="
6";
Definir i,j,k Como Entero
k=0;Escribir" .. patrones para formación de posibles matrices mágicas de un
paso";Escribir""
diagonal[0]=" . diag. I-D ascend.";diagonal[1]=" . diag. I-D descen.";
diagonal[2]=" . diag. D-I ascend.";diagonal[3]=" . diag. D-I descen.";
diente[0]=" . diente Hor-Der";diente[1]=" . diente Ver-Desc";
diente[2]=" . diente Ver-Asce";diente[3]=" . diente Hor-Izq";
para i=0 hasta 3 Hacer
para j=0 hasta 3 Hacer
k=k+1
Escribir " .. Patrón ",p[k]," ",diagonal[i]," .. ",diente[j]
FinPara
FinPara
Escribir"";Escribir" .. Tomar patrón ",p[azar(16)+1]
FinAlgoritmo
Ejemplos en “PseInt” manejando cadena de caracteres
/// Tomado de los ejemplos que trae el "PseInt"
/// Este ejemplo muestra cómo utilizar las funciones para manejo
/// de cadenas de caracteres. Requiere que el perfil de lenguaje
/// habilite estas funciones. Si al intentar ejecutar obtiene
/// errores en las funciones, revise su configuración en el
/// item "Opciones del lenguaje" del menú "Configurar".
///
Algoritmo cadenas0
Definir frase,vocales Como Caracter
Definir i,j,cantVocales Como Entero
Definir porciento Como Real
/// el usuario ingresa una frase, vamos a contar cuantas vocales tiene
Escribir "Ingrese una frase:";Leer frase
/// pasamos toda la frase a minúsculas para no tener que preguntar 2 veces por cada
vocal
frase<-Minusculas(frase)
/// lista de letras que vamos a buscar
Vocales="aeiouáéíóúü"
cantvocales=0
/// comparar todas las letras de frase con las de vocales y contar coincidencias
Para i=0 hasta Longitud(frase)-1 Hacer
Para j=0 hasta Longitud(vocales)-1 Hacer
Si Subcadena(frase,i,i)=Subcadena(vocales,j,j) Entonces
cantVocales=cantVocales+1
FinSi
FinPara
FinPara
porciento=cantVocales/Longitud(frase)*100
Escribir "La frase contiene ",cantVocales," vocales."
Escribir "La frase contiene ",trunc(porciento*100)/100,"% de vocales."
FinAlgoritmo
Un programa ejemplo de manejo de “cadenas”, aplicado a seleccionar una alternativa en la
construcción de posibles cuadrados mágicos
Algoritmo magico_textos_alternativas
/// fila / columna; (2)
/// primera / ultima; (2)
/// sierra ascendente / sierra descendente; (2)
/// de derecha a izquierda / de izquierda a derecha; (2)
/// diente horizontal de derecha a izquierda / diente horizontal de izquierda a derecha;
/// diente vertical subiendo / diente vertical bajando (4)
///
definir t,t0,t1,v,v1,v2,v3,v4 como texto;
definir i,j,k,l,r,s,N como numerico;
dimension t[14],v[32]
N=azar(3)+5;Si N%2=0 entonces N=N+1;finsi
t0="empezando por ";t1=": formar magico "
t[0]="primera ";t[1]="ultima ";t[2]="fila, ";t[3]="columna, ";
t[4]="sierra ascendente, ";t[5]="sierra descendente, ";
t[6]="de derecha a izquierda, ";t[7]="de izquierda a derecha, ";
v1="diente horizontal de derecha a izquierda.";v2="diente horizontal de izquierda a derecha.";
v3="diente vertical subiendo.";v4="diente vertical bajando.";
t[10]=v1;t[8]=v2;t[11]=v3;t[9]=v4;
escribir sin saltar t1+t0+".. "
escribir "["+t[0]+" / "+t[1]+"] "+"["+t[2]+" / "+t[3]+"]"
escribir "["+t[4]+" / "+t[5]+"] "+"["+t[6]+" / "+t[7]+"]"
escribir "["+t[8]+" / "+t[10]+"]"
Escribir "["+t[9]+" / "+t[11]+"]"
v[0]=v2;v[1]=v4;v[2]=v1;v[3]=v4;v[4]=v2;v[5]=v3;v[6]=v1;v[7]=v3;
v[8]=v2;v[9]=v4;v[10]=v1;v[11]=v4;v[12]=v2;v[13]=v3;v[14]=v1;v[15]=v3;
v[16]=v2;v[17]=v4;v[18]=v1;v[19]=v4;v[20]=v2;v[21]=v3;v[22]=v1;v[23]=v3;
v[24]=v2;v[25]=v4;v[26]=v1;v[27]=v4;v[28]=v2;v[29]=v3;v[30]=v1;v[31]=v3;
s=0;escribir " "
para j=0 hasta 1 hacer /// primera, última
para k=2 hasta 3 hacer /// fila, columna
para l=4 hasta 5 hacer /// sierra ascendente, sierra descendente
para r=6 hasta 7 hacer /// sierra de derecha a izquierda, sierra de izquierda a
derecha
si l=4 entonces /// sierra ascendente
s=s+1;escribir Sin Saltar "Alt: "
si s<10 entonces escribir sin saltar "0";finsi
escribir s,t1+t0+t[j]+t[k]+t[l]+t[r]+v[s-1];
s=s+1;escribir Sin Saltar "Alt: "
si s<10 entonces escribir sin saltar "0";finsi
escribir s,t1+t0+t[j]+t[k]+t[l]+t[r]+v[s-1];
sino /// sierra descendente
s=s+1;escribir Sin Saltar "Alt: "
si s<10 entonces escribir sin saltar "0";finsi
escribir s,t1+t0+t[j]+t[k]+t[l]+t[r]+v[s-1];
s=s+1;escribir Sin Saltar "Alt: "
si s<10 entonces escribir sin saltar "0";finsi
escribir s,t1+t0+t[j]+t[k]+t[l]+t[r]+v[s-1];
finsi
finpara
finpara
finpara
finpara
escribir " "
escribir "Alternativa:",Azar(s)+1;///escribir " "
Escribir sin saltar".. para sierra ascendente tomar serie ascendente y primer término 11"
Escribir sin saltar" .. para sierra descendente tomar serie descendente y primer término 99"
Escribir"";Escribir" .. Cuadrado mágico para N:",N
FinAlgoritmo
Paseo del caballo: para acabar de entender la construcción de los cuadrados mágicos,
a continuación, aparecen dos matrices no cuadradas de orden (N=7, M=6). Una de las
matrices está parcialmente ocupada por una serie de números en forma consecutiva.
Al recorrer consecutivamente la serie verán que esos “movimientos” semejan el
movimiento de la pieza de ajedrez “Caballo”. La otra matriz está vacía. Con dicha
matriz, cada uno de ustedes, realice otro “Paseo del Caballo”. Deduzca intuitivamente
el “Paseo del Caballo”, antes de pasar al siguiente párrafo de instrucciones
Instrucciones: coloque el número uno (1) donde quiera hacerlo dentro del tablero y
empiece a desplazarse (hacer “movimientos”) en forma de ele (“L”) a través del
tablero. Durante el recorrido no se puede “ocupar” una posición “ya ocupada”,
tampoco puede hacerlo fuera del tablero. Hágalo hasta que se le agoten las ocho (8)
posibilidades que tienen para cada movimiento (en cuyo caso el “Caballo” se
“ahoga”).
Posición inicial de partida [2,2]. Para la matriz parcialmente ocupada el último movimiento que se
realizó ocupó el puesto 34 en la posición [2, 5]
Note que las denominaciones de las filas (primer subíndice, i) crecen en forma vertical
de arriba hacia abajo y que las denominaciones de las columnas (segundo subíndice, j)
crecen en forma horizontal de izquierda a derecha
Matrices en el juego del Ajedrez
Desplazamientos de la pieza de ajedrez caballo, desde la posición (i 0, j0)
Aquí la posición (i0, j0) = (2, 2)
Las filas van en sentido horizontal y aumentan de arriba hacia abajo
Las columnas van en sentido vertical y aumentan de izquierda a derecha
Algoritmo caballo_I_2022
Definir T,ii,jj,i,j,k,n,m,i0,j0,ix,jy Como Entero
Dimension T(8,8),ii(8),jj(8)
ii(0)=2;ii(1)=2;ii(2)=1;ii(3)=1;ii(4)=-1;ii(5)=-1;ii(6)=-2;ii(7)=-2;
jj(0)=-1;jj(1)=1;jj(2)=-2;jj(3)=2;jj(4)=2;jj(5)=-2;jj(6)=-1;jj(7)=1;
n=8; ///orden del Tablero
/// Inicializando tablero: colocar cero (0) en cada posición para indicar tablero vacío
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
T[i,j]=0
FinPara
FinPara
i0=Azar(n)
j0= Azar(n)
///i0=3;j0=4; /// para probar inicialmente
k=1;T[i0,j0]=k;
Escribir"";Escribir" .. posición inicial:","(",i0,",",j0,")= ", T[i0,j0];Escribir"";
ix=i0;jy=j0;m=8*8;
/// Efecuando "Paseo" sin repetir posición "ocupada"
Para j=2 Hasta m Con Paso 1 Hacer
Para i=0 Hasta 7 Con Paso 1 Hacer
ix=i0+ii(i);jy=j0+jj(i);
Si ix>-1 & ix<8 & jy>-1 & jy<8 Entonces
Si T[ix,jy]=0 Entonces
k=k+1;T[ix,jy]=k;
i0=ix;j0=jy;
FinSi
FinSi
FinPara
FinPara
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
si T[i,j]<10 entonces escribir sin saltar"0";finsi
Escribir sin saltar T[i,j]," "
FinPara
Escribir" "
FinPara
Escribir " "
Escribir" k:",k,” de 64 posibles”
FinAlgoritmo
Artículo tomado de la web: Algunas características de los cuadrados
mágicos (y un método para cuadrados mágicos de orden par)
https://www.monografias.com/trabajos84/cuadrados-magicos-pares/
cuadrados-magicos-pares.shtml
1) El menor orden de un cuadrado mágico es tres.
2) Todo cuadrado mágico puede ser construido por números que forman una progresión aritmética.
3) Al ordenar un cuadrado mágico, la suma de los números de las columnas, filas y diagonales serán igual a una constante
llamada constante mágica.
4) Los cuadrados mágicos son clasificados de acuerdo con el número de celdas que tiene cada fila o columna.
Hasta el momento no se conoce un método genérico que nos permita resolver cuadrados mágicos de cualquier orden (par o
impar). Si bien el método que se presentará (método de simetría) a continuación sólo es aplicable a los de orden par, a
diferencia de otros existentes, mediante el mismo podremos construir cualquier cuadrado mágico de orden par, siempre que
el mismo esté constituido por elementos que pertenezcan a sucesiones aritméticas.
Como se puede notar en la figura de abajo, los números dentro de cada celda están dispuestos de forma tal que cada fila y
columna forman una sucesión aritmética. La diferencia entre los elementos posteriores y anteriores da como resultado la
misma constante para cada una de las cuatro sucesiones organizadas en las filas, lo mismo sucede para cada una de las
cuatro sucesiones que se forman en las columnas.
F1 = 1, 2, 3, 4; F2 = 5, 6, 7, 8; F3 = 9, 10, 11, 12; F4 = 13, 14, 15, 16
Las diferencias entre los términos posteriores y anteriores es la misma para cada una de las sucesiones (d = 1).
C1 = 1, 5, 9, 13; C2 = 2, 6, 10, 14; C3 = 3, 7, 11, 15; C4 = 4, 8, 12, 16
Las diferencias entre los términos posteriores y anteriores es la misma para cada una de las sucesiones (d = 4).
Siempre que un arreglo de números esté dispuesto de la manera mostrada se podrá construir un cuadrado mágico que se
podrá resolver por el método de simetría.
Método de Simetría por Inversión de Diagonales
Los cuadrados mágicos de orden par pueden ser resueltos de forma sencilla siguiendo los siguientes pasos:
1) Ordenar los números de manera ascendente o descendente en el cuadrado mágico a resolver, tal como se muestra en
las figuras.
2) Invertir el orden de los números que forman las diagonales, de tal forma que el primero ocupe el lugar del último, el
segundo el del penúltimo, el tercero el del antepenúltimo y así sucesivamente, como se muestra en las Figuras.
3) Dividir imaginariamente en dos regiones el cuadrado, de forma tal que los números que componen la primera región y
que no pertenecen al conjunto de las diagonales, puedan ser intercambiados por los que ocupan el lugar de simetría de la
segunda región, este intercambio se efectuará de igual manera en las filas y columnas que forman el cuadrado, para
conocer la cantidad de intercambios que deben realizarse, utilizaremos la siguiente fórmula:
Donde:
Ic = Cantidad de intercambios en las filas y columnas simétricas.
n = orden del cuadrado mágico (par > 2).
Ejemplos:
Dados los siguientes cuadrados pares, disponerlos de forma tal que la suma de los números de las diagonales, filas y
columnas sea la misma.
Ejemplo Cuadrado 1:
1 2 3 4
9 10 11 12
17 18 19 20
25 26 27 28
Paso 1:
No es necesario dar este paso dado que los números están organizados de forma ascendente.
Paso 2:
28 2 3 25
9 19 18 12
17 11 10 20
4 26 27 1
Paso 3:
Lo que significa que nuestro cuadrado ha quedado organizado, no hay necesidad de completar el paso 3.
28 2 3 25
9 19 18 12
17 11 10 20
4 26 27 1
Ejemplo Cuadrado 2:
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 34 35 36
Paso 1: no es necesario.
Los números dentro de los cuadros azules cambian de posición con sus simétricos horizontales.
Los números dentro de los cuadros verdes cambian de posición con sus simétricos verticales.
Patrón simétrico resultante para un cuadrado de orden 8x8.
Patrón simétrico resultante para un cuadrado de orden 12x12.
Patrón simétrico resultante para un cuadrado de orden 14x14.
Como podemos observar construir cuadrados mágicos de orden par siguiendo el método de simetría es bastante sencillo y
elegante.
"El estudio de las matemáticas no está limitado a aquellas ramas que son prácticas o útiles al ser humano, ya que es en la no
aplicadas donde encuentra su verdadera autonomía, la de ser abstracta."
José Acevedo J. / Autor: José Acevedo Jiménez
“No hay ninguna rama de las matemáticas, por abstracta que sea, que no pueda aplicarse algún día a los fenómenos del
mundo real.” Nikolái Lobachevski, matemático ruso
Método de Simetría Simple, sin Inversión de Diagonales
El método de simetría simple es semejante al método de simetría por inversión de diagonales, con la diferencia de que
en el simple no se invierten las diagonales, estas son intercambiadas por sus simétricas verticales u horizontales, según
se prefiera.
En el método de simetría simple la fórmula para encontrar está dada por:
Patrón simétrico resultante para un cuadrado de orden 8x8.
Patrón simétrico resultante para un cuadrado de orden 12x12.
Los números dentro de los cuadros verdes cambian de posición con sus simétricos verticales, los de color azul con sus
simétricos horizontales.
Nota:
El método de simetría por inversión de diagonales puede ser aplicado a cualquier cuadrado mágico de orden par. Es
importante saber que, sólo resultan ser verdaderamente simétricos los cuadrados cuyo orden puede ser dividido por
cuatro, ya que sólo estos nos dan una Ic de número par.
El método de simetría simple, a diferencia del método anterior, resulta ser siempre simétrico pues sólo puede ser
aplicado en cuadrados mágicos de orden 4n.
Matemáticos de la talla de: Euler, Fermat, Pascal, Leibnitz, estudiaron los cuadrados mágicos pese a conocer que no
tenían uso práctico alguno.
Los antiguos chinos conocen los cuadrados mágicos desde hace miles de años. Según una de sus leyendas, cierto día se
produjo la crecida de un río; los aldeanos, aterrados, quisieron hacer una ofrenda al dios del río para aplacar su furia.
Pero, cada vez que lo hacían, salía una tortuga que recorría el ofrecimiento sin aceptarlo, esto siempre ocurría, hasta
que un pequeño observó las marcas características del caparazón de la tortuga, un cuadrado mágico de orden 3 3, de
este modo pudieron resolver el acertijo e incluir en su ofrenda la cantidad pedida, es decir 15, sólo así quedó el dios
satisfecho, haciendo volver las aguas a su cauce.