How to rotate a matrix 90 degrees clockwise in Scala

2 Answers

0 votes
object MatrixRotation {
  def rotate90Clockwise(matrix: Array[Array[Int]]): Unit = {
    val N = matrix.length

    // Step 1: Transpose the matrix
    for (i <- 0 until N) {
      for (j <- i until N) {
        val temp = matrix(i)(j)
        matrix(i)(j) = matrix(j)(i)
        matrix(j)(i) = temp
      }
    }

    // Step 2: Reverse each row
    for (i <- 0 until N) {
      matrix(i) = matrix(i).reverse
    }
  }

  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),
      Array(4, 5, 6),
      Array(7, 8, 9)
    )

    println("Original Matrix:")
    printMatrix(matrix)

    rotate90Clockwise(matrix)

    println("\nRotated Matrix:")
    printMatrix(matrix)
  }
}


 
/*
run:

Original Matrix:
1 2 3
4 5 6
7 8 9

Rotated Matrix:
7 4 1
8 5 2
9 6 3

*/

 



answered May 30, 2025 by avibootz
0 votes
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

*/

 



answered May 30, 2025 by avibootz

Related questions

2 answers 189 views
2 answers 217 views
2 answers 192 views
2 answers 178 views
...