How to inverse N x M matrix in Kotlin

1 Answer

0 votes
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

*/

 



answered 1 day ago by avibootz
...