How to inverse N x M matrix in Scala

1 Answer

0 votes
object InverseMatrixObject {

  def printMatrix(matrix: Vector[Vector[Int]]): Unit = {
    matrix.foreach { row =>
      println(row.map(v => f"$v%4d").mkString)
    }
  }

  def inverseMatrix(matrix: Vector[Vector[Int]]): Vector[Vector[Int]] = {
    val rows = matrix.length
    val cols = matrix.head.length

    // Flatten, reverse, then regroup into rows
    val flatReversed = matrix.flatten.reverse
    flatReversed.grouped(cols).map(_.toVector).toVector
  }

  def main(args: Array[String]): Unit = {
    val matrix = Vector(
      Vector(1, 2, 3, 4),
      Vector(5, 6, 7, 8),
      Vector(9, 10, 11, 12)
    )

    println("matrix:")
    printMatrix(matrix)

    val inverted = inverseMatrix(matrix)

    println("\ninverse matrix:")
    printMatrix(inverted)
  }
}




/*
run:

matrix:
   1   2   3   4
   5   6   7   8
   9  10  11  12

inverse matrix:
  12  11  10   9
   8   7   6   5
   4   3   2   1

*/

 



answered 1 day ago by avibootz
...