Generar una matriz caracol es un problema clásico en programación, especialmente cuando estamos iniciando a utilizar Arrays y una matriz es simplemente un array bidimensional. Mostraremos como solucionarlo y un ejemplo en el lenguaje de programación Java.
Aprenderás
- Generar una matriz caracol de la forma sencilla.
Requisitos
- Conocimientos básicos en arrays, unidimensionales y bidimensionales.
Matriz Caracol
Una matriz caracol tiene la forma de su nombre, por ejemplo una matriz cuadrada de tamaño 5 sería la siguiente:
La forma más sencilla de resolverlo es tener cuatro ciclos repetitivos que recorran los lados y uno extra para que repita esa operación en el caso de una dimensión 5 deberá repetirlo 2 veces y colocar un numero mas en el centro, en el caso de dimensión par entonces repetimos dimensión dividido entre 2 veces.
En el diagrama de flujo, n
es la dimensión de la matriz cuadrada y x
es un número con cual empezara a generar la matriz caracol. A continuación la solución en Java.
Código
Método que genera la matriz caracol donde n
es la dimensión de la matriz (matriz cuadrada) y x
es el número por el cual empezará, por ejemplo puedes enviarle 1
.
public static int[][] generarMatrizCaracol(int n, int x) {
int[][] M = new int[n + 1][n + 1];
for (int a = 1; a <= n / 2; a++) {
for (int i = a; i <= n - a; i++) {
M[a][i] = x;
x++;
}
for (int i = a; i <= n - a; i++) {
M[i][n - a + 1] = x;
x++;
}
for (int i = n - a + 1; i >= a + 1; i--) {
M[n - a + 1][i] = x;
x++;
}
for (int i = n - a + 1; i >= a + 1; i--) {
M[i][a] = x;
x++;
}
}
if (n % 2 == 1) {
M[n / 2 + 1][n / 2 + 1] = x;
}
return M;
}
Código completo en:
Tomar en cuenta que se genero matriz a partir de la posición (1, 1) sin embargo para la primera posición en Java es (0, 0), podemos cambiar ello de manera sencilla.