package main
import (
"fmt"
)
func Transpose(matrix [][]int) [][]int {
rows := len(matrix)
cols := len(matrix[0])
// allocate transposed matrix
result := make([][]int, cols)
for i := range result {
result[i] = make([]int, rows)
}
// fill transposed values
for i := 0; i < rows; i++ {
for j := 0; j < cols; j++ {
result[j][i] = matrix[i][j]
}
}
return result
}
func Print(matrix [][]int) {
for _, row := range matrix {
fmt.Println(row)
}
}
func main() {
matrix := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
t := Transpose(matrix)
Print(t)
}
/*
run:
[1 4 7]
[2 5 8]
[3 6 9]
*/