object MirrorMatrix {
def main(args: Array[String]): Unit = {
// Example input matrix (2D array)
val matrix = Array(
Array(1, 2, 3),
Array(4, 5, 6),
Array(7, 8, 9)
)
println("Original Matrix:")
printMatrix(matrix)
// Mirror the matrix across the main diagonal
mirrorMatrix(matrix)
println("\nMirrored Matrix:")
printMatrix(matrix)
}
// Function to mirror a matrix across the main diagonal
def mirrorMatrix(matrix: Array[Array[Int]]): Unit = {
val n = matrix.length
// Iterate over the upper triangle of the matrix
for (i <- 0 until n) {
for (j <- i + 1 until n) {
// Swap elements above the diagonal with those below it
val temp = matrix(i)(j)
matrix(i)(j) = matrix(j)(i)
matrix(j)(i) = temp
}
}
}
def printMatrix(matrix: Array[Array[Int]]): Unit = {
matrix.foreach(row => println(row.mkString(" ")))
}
}
/*
run:
Original Matrix:
1 2 3
4 5 6
7 8 9
Mirrored Matrix:
1 4 7
2 5 8
3 6 9
*/