object MatrixRotation {
def rotate90Clockwise(matrix: Array[Array[Int]]): Array[Array[Int]] = {
val rows = matrix.length
val cols = matrix(0).length
// Create a new rotated matrix
val rotated = Array.ofDim[Int](cols, rows)
// Map values to rotated positions
for (i <- 0 until rows) {
for (j <- 0 until cols) {
rotated(j)(rows - 1 - i) = matrix(i)(j)
}
}
rotated
}
def printMatrix(matrix: Array[Array[Int]]): Unit = {
matrix.foreach(row => println(row.mkString(" ")))
}
def main(args: Array[String]): Unit = {
val matrix = Array(
Array(1, 2, 3, 4),
Array(5, 6, 7, 8),
Array(9, 10, 11, 12)
)
println("Original Matrix:")
printMatrix(matrix)
val rotated = rotate90Clockwise(matrix)
println("\nRotated Matrix:")
printMatrix(rotated)
}
}
/*
run:
Original Matrix:
1 2 3 4
5 6 7 8
9 10 11 12
Rotated Matrix:
9 5 1
10 6 2
11 7 3
12 8 4
*/