How to inverse N x M matrix in Swift

1 Answer

0 votes
import Foundation

func printMatrix(_ matrix: [[Int]]) {
    for row in matrix {
        let line = row.map { String(format: "%4d", $0) }.joined()
        print(line)
    }
}

func inverseMatrix(_ matrix: [[Int]]) -> [[Int]] {
    let cols = matrix[0].count

    // Make reversed data an Array so we can use Int indexing
    let flatReversed = Array(matrix.flatMap { $0 }.reversed())

    return stride(from: 0, to: flatReversed.count, by: cols).map { i in
        Array(flatReversed[i ..< i + cols])
    }
}

func main() {
    let matrix = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    ]

    print("matrix:")
    printMatrix(matrix)

    let inverted = inverseMatrix(matrix)

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

main()



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