lunes, 19 de enero de 2009

Matrices en Java (Cuadrado Mágico)

Programa que genera el cuadrado mágico. El programa debe colocar los números del 1 al 9 en una matriz de 3x3 de forma que la suma de cada fila, de cada columna y de las diagonales tenga el mismo resultado.
import java.util.Calendar;

public class CuadradoMagico
{
public static void main(String args[])
{
int cuadrado[][] = new int[3][3];
int suma, fil, col, intento = 1;
boolean posicionCorrecta;
boolean correcto;

long t1, t2, dif;
Calendar ahora1 = Calendar.getInstance();
t1 = ahora1.getTimeInMillis();

do
{
correcto = true;
//Inicializar la matriz
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
cuadrado[i][j] = 0;

//Colocar los números del 1 al 9 aleatoriamente
for(int num=1; num<=9; num++)
{
do
{
posicionCorrecta = false;
fil = (int)(Math.random()*3);
col = (int)(Math.random()*3);
if(cuadrado[fil][col]==0)
{
posicionCorrecta = true;
cuadrado[fil][col] = num;
}
}while(!posicionCorrecta);
}

intento++;

//Comprobar si las sumas son iguales
suma = cuadrado[0][0] + cuadrado[0][1] + cuadrado[0][2];
if(suma!=cuadrado[1][0] + cuadrado[1][1] + cuadrado[1][2])
correcto = false;
else
if(suma!=cuadrado[2][0] + cuadrado[2][1] + cuadrado[2][2])
correcto = false;
else
if(suma!=cuadrado[0][0] + cuadrado[1][0] + cuadrado[2][0])
correcto = false;
else
if(suma!=cuadrado[0][1] + cuadrado[1][1] + cuadrado[2][1])
correcto = false;
else
if(suma!=cuadrado[0][2] + cuadrado[1][2] + cuadrado[2][2])
correcto = false;
else
if(suma!=cuadrado[0][0] + cuadrado[1][1] + cuadrado[2][2])
correcto = false;
else
if(suma!=cuadrado[0][2] + cuadrado[1][1] + cuadrado[2][0])
correcto = false;
else
correcto = true;
}while(!correcto);

Calendar ahora2 = Calendar.getInstance();
t2 = ahora2.getTimeInMillis();

//Mostrar el cuadrado
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
System.out.print(cuadrado[i][j]+" ");
System.out.println();
}

//Se muestra en pantalla el tiempo tardado
dif = t2 - t1;
System.out.println("Generado en: " + dif + " milisegundos con "+ intento+ " intentos");
}
}

10 comentarios:

  1. Podrías agregar mas comentarios al código, entiendo un poco pero en algunas líneas me confundo

    ResponderEliminar
  2. Gracias por el aporte, pero debe haber un mejor algoritmo para ello, si fuera una matriz de nxn, de 10 por 10 sería un código muy extenso según la forma en como lo haces. Saludos.

    ResponderEliminar
    Respuestas
    1. Yo tengo ese problema, tengo que hacerlo de nxn
      ¿Tienes algo que me pueda ayudar?

      Eliminar
  3. +1000 pinche perro hay te va mi pichula

    ResponderEliminar
  4. A nivel de matemáticas existen estudios de la teoría de matrices cuadradas por su particularidad de operaciones aritmeticas. Igualmente las matrices cuadradas se aplican hoy en desarrollo de juegos para el cerebro.

    Comparto un link con un programa en java que determina si una matriz es o no cuadrada mágica: https://tutorias.co/arrays-javamatriz-cuadrada-magica/

    ResponderEliminar

 

Contador de visitas