Matrix transposition
func transpose(matrix) {
matrix[0].range.map {|i| matrix.map { _[i] } }
}
var m = [
[1, 1, 1, 1],
[2, 4, 8, 16],
[3, 9, 27, 81],
[4, 16, 64, 256],
[5, 25, 125, 625],
]
transpose(m).each { |row|
"%5d" * row.len -> printlnf(row...)
}
Output:
1 2 3 4 5
1 4 9 16 25
1 8 27 64 125
1 16 81 256 625