fun printMatrix(matrix: List<List<Int>>) {
matrix.forEach { row ->
println(row.joinToString("") { "%4d".format(it) })
}
}
fun inverseMatrix(matrix: List<List<Int>>): List<List<Int>> {
val rows = matrix.size
val cols = matrix[0].size
// Flatten, reverse, then regroup into rows
val flatReversed = matrix.flatten().asReversed()
return flatReversed.chunked(cols)
}
fun main() {
val matrix = listOf(
listOf(1, 2, 3, 4),
listOf(5, 6, 7, 8),
listOf(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
*/