Objetivo:
El objetivo del algoritmo es rotar una matriz o tabla de distancias 90 grados en sentido horario utilizando la librería Apache Commons Math.
La librería Apache Commons Math se utiliza para manejar eficientemente las operaciones matriciales, proporcionando una estructura de datos robusta (RealMatrix) y métodos optimizados para acceder y modificar los elementos de la matriz.
Requisitos:
- NetBeans IDE
- Apache Commons Math (versión 3.6.1)
Pasos:
1. Descarga la librería Apache Commons Math 3.6.1 desde:
https://archive.apache.org/dist/commons/math/binaries/
2. Buscar, descargar y descomprimir el archivo "commons-math3-3.6.1-bin.zip".
3. En NetBeans, añadir la librería "commons-math3-3.6.1.jar" al proyecto.
Código Java (MatrixRotator.java):
package matrixrotator;
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.RealMatrix;
public class MatrixRotator {
public static RealMatrix rotate90Degrees(RealMatrix matrix) {
int rows = matrix.getRowDimension();
int cols = matrix.getColumnDimension();
RealMatrix rotatedMatrix = new Array2DRowRealMatrix(cols, rows);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
rotatedMatrix.setEntry(j, rows - 1 - i, matrix.getEntry(i, j));
}
}
return rotatedMatrix;
}
public static void printMatrix(RealMatrix matrix) {
for (int i = 0; i < matrix.getRowDimension(); i++) {
for (int j = 0; j < matrix.getColumnDimension(); j++) {
System.out.printf("%6d", (int) matrix.getEntry(i, j));
}
System.out.println();
}
}
public static void main(String[] args) {
double[][] data = {
{0, 610, 703, 319, 90, 290, 219, 564},
{12, 0, 897, 165, 549, 786, 859, 303},
{505, 115, 0, 535, 445, 677, 639, 44},
{359, 366, 581, 0, 848, 322, 841, 165},
{500, 128, 653, 500, 0, 903, 789, 449},
{559, 93, 314, 176, 404, 0, 130, 964},
{55, 349, 2, 787, 622, 425, 0, 58},
{909, 447, 276, 860, 388, 624, 666, 0}
};
RealMatrix matrix = new Array2DRowRealMatrix(data);
System.out.println("Matriz original:");
printMatrix(matrix);
RealMatrix rotatedMatrix = rotate90Degrees(matrix);
System.out.println("\nMatriz rotada 90 grados:");
printMatrix(rotatedMatrix);
}
}
Resultado:
run:
Matriz original:
0 610 703 319 90 290 219 564
12 0 897 165 549 786 859 303
505 115 0 535 445 677 639 44
359 366 581 0 848 322 841 165
500 128 653 500 0 903 789 449
559 93 314 176 404 0 130 964
55 349 2 787 622 425 0 58
909 447 276 860 388 624 666 0
Matriz rotada 90 grados:
909 55 559 500 359 505 12 0
447 349 93 128 366 115 0 610
276 2 314 653 581 0 897 703
860 787 176 500 0 535 165 319
388 622 404 0 848 445 549 90
624 425 0 903 322 677 786 290
666 0 130 789 841 639 859 219
0 58 964 449 165 44 303 564
BUILD SUCCESSFUL (total time: 0 seconds)