¡Gracias por visitar Tecno Academy!                     Informática, todos los niveles - Trucos - Apuntes - Diapositivas - Libros - Enlaces - Curiosidades - Descargas - Tecnologías - Opiniones - Podcasting, Byte - Internautas TV - Pizarra Virtual                   

jueves, 27 de septiembre de 2007

Cuadrados mágicos

-¡Salva, he venido para que me enseñes Informática, ¿a qué viene ahora que te pongas a mostrarme cuadros?

-¡Anda, no te impacientes tanto y amplía la imagen a ver qué ves debajo de la campana y a la derecha del reloj de arena.

-Pues, un cuadro con muchos números.

-¡Y para eso vais a la universidad! Si es que no sé dónde tenéis la sensibilidad. En este grabado de Durero estás viendo un ejemplo de uno de los cuadrados mágicos más fascinantes del arte, aunque no es el único. Si prestases un poco más de atención verías que sus filas suman 34, su columnas también, y sus diagonales. Por si fuera poco sus cuatro esquinas suman 34, los números centrales de la fila superior e inferior suman 34 al igual que los números centrales de las columnas izquierda y derecha. Si, además divides el cuadro en cuatro cuadrados la suma de los números que integran cada subcuadrado es 34. Dime, ¿te gusta el ajedred?

- Hombre, me sé las reglas pero la verdad es que no juego mucho porque me aburre.

- Si es que... bueno, entonces sabrás los movimientos del caballo.

- Sí, claro.

- Pues haz mentalmente los movimientos 3, 8, 14, 15 y los movimientos 2, 5, 15, 12 y dime cuánto suman.

- ¡34!

- Vamos, no te hagas el sorprendido. No los has sumado porque ya lo veías venir. En fin, esto viene a cuento de que vamos a intentar programar cuadrados mágicos para que vayas practicando las estructuras de control. Empezaremos por un método sencillo: consiste en construir cuadrados mágicos de orden n impar y deriva de un método llamado de Loubere. Supongamos n=3, por ejemplo.
  1. Empiezas construyendo el cuadro vacío y colocando el 1 en la celda central de la primera fila.

  2. Después del 1 hay que colocar el 2. Entonces debes preguntarte si el número anterior (el 1) es múltiplo de n (en nuestro caso 3). Como no lo es sitúas el 2 en la fila anterior y en la columna posterior a la celda ocupada por el 1.

  3. Debes considerar como fila anterior a la primera, la última. Y como columna posterior a la última, la primera.

  4. Luego, el 2 va en la fila 3, columna 3.

  5. Después del 2 tienes que colocar el 3. Ya que el número anterior (el 2) tampoco es múltiplo de n, colocas el 3 en la fila anterior y la columna posterior a la ocupada por el 2. Siguiendo el criterio que comenté anteriormente la columna posterior a la 3, en este caso, es la 1. Colocamos el 3 en fila 2, columna 1. Así sucesivamente.

  6. ¿Y qué pasa cuando el número anterior es múltiplo de n? Por ejemplo, cuando vamos a colocar el 4 resulta que el 3 es múltiplo de sí mismo. Pues, en tales circunstancias, colocas el nuevo número en la fila posterior de la misma columna a la ocupada por el número anterior.

  7. Al final, tendrás un cuadrado cuyas filas, columnas y diagonales suman (n/2)*(n^2+1), esto es, sustituyendo n por 3, tendremos que en nuestro caso deberían sumar 15.

- Como ya te veo cara de circunstancias, te dejo el pseudocódigo para que lo digieras con más calma.


- Luego implementas una rutina de visualización de la matriz y al final debe quedarte el siguiente cuadro:

- Hay muchos otros métodos para construir cuadrados mágicos como el de Bachet pero eso lo dejo para cuando "pilotes" un poco más. De hecho, voy a ponértelo como ejercicio para que indages un poco más sobre los cuadrados mágicos y alimentes un poco más esa curiosidad.

28-101-2008: En vista de que mucha gente ha solicitado código Visual Basic para implementar cuadrados mágicos, publico a continuación, un documento donde un alumno, a modo de memoria, deja constancia de su práctica. Podéis verlo a pantalla completa haciendo clic en el control de la esquina superior derecha; también podéis descargarlo directamente en formato pdf desde Scribd.



No hay comentarios: