fun mirrorMatrix(matrix: Array<Array<Int>>): Array<Array<Int>> {
val n = matrix.size
// Validate that the matrix is square
if (matrix.any { it.size != n }) {
throw IllegalArgumentException("The matrix must be square (NxN).")
}
// Perform the mirroring by swapping elements across the main diagonal
for (i in 0 until n) {
for (j in i + 1 until n) { // Only traverse above the diagonal
// Swap elements (i, j) and (j, i)
val temp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = temp
}
}
return matrix
}
fun main() {
val matrix = arrayOf(
arrayOf(1, 2, 3),
arrayOf(4, 5, 6),
arrayOf(7, 8, 9)
)
println("Original Matrix:")
matrix.forEach { println(it.joinToString(" ")) }
// Mirror the matrix across the main diagonal
val mirroredMatrix = mirrorMatrix(matrix)
println("\nMirrored Matrix:")
mirroredMatrix.forEach { println(it.joinToString(" ")) }
}
/*
run:
The last digit is: 2
*/