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
*/