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