public class MatrizFuerzaBruta {
public static void main(String[] args) {
new MatrizFuerzaBruta();
}
public MatrizFuerzaBruta() {
motorMatrizFB();
}
public void motorMatrizFB() {
int columna = 0;
int fila = 0;
//Tamaño de la matriz
int tamanioTablero = 10;
int[][] mat = new int[tamanioTablero][tamanioTablero+1];
//Iniciliza la matriz
mat = posicionInicialUno(mat);
boolean comprobar = false;
//Bucle infinito(futura modificacion)
while (true) {
//Muestra el estado de la matriz
muestraMatriz(mat);
//Gestiona la primera fila moviendo la "badera" en cada iteracion
if (fila == 0) {
columna += 1;
for (int x = 0; x < columna; x++) {
mat[fila][x] = 0;
}
mat[fila][columna] = 1;
}
//Salta de fila si llega al final
if (mat[fila][tamanioTablero] == 1) {
comprobar = true;
fila += 1;
for (int i = 0; i < fila; i++) {
for (int e = 0; e < mat[i].length; e++) {
if (e == 0) {
mat[i][e] = 1;
} else {
mat[i][e] = 0;
}
}
}
//Busca la posicion de la badera, la elimina y la mueve 1 posicion
int posicion = obtenerPosicion(mat, fila);
mat[fila][posicion] = 0;
mat[fila][posicion + 1] = 1;
}
if (mat[fila][tamanioTablero] == 0 && comprobar == true) {
comprobar = false;
fila = 0;
columna = -1;
}
}
}
//Printa el estado de la matriz
private void muestraMatriz(int[][] mat) {
for(int i=0;i<mat.length;i++) {
for(int e = 0;e<mat.length;e++) {
System.out.print(mat[i][e]);
}
System.out.println("");
}
System.out.println("\n\n\n");
}
//Inicializa la primera columna de cada fila con la "bandera"
private static int[][] posicionInicialUno(int[][] mat) {
for (int i = 0; i < mat.length; i++) {
mat[i][0] = 1;
}
return mat;
}
//Obtiene la posicion donde se encuentra la "bandera" en la fila
public int obtenerPosicion(int[][] matrizCopia, int fila) {
int pos = 0;
for (int i = 0; i < matrizCopia.length; i++) {
if (matrizCopia[fila][i] == 1) {
pos = i;
}
}
return pos;
}
}