fn transpose<T: Copy>(matrix: &Vec<Vec<T>>) -> Vec<Vec<T>> {
let rows = matrix.len();
let cols = matrix[0].len();
let mut result = vec![vec![matrix[0][0]; rows]; cols];
for i in 0..rows {
for j in 0..cols {
result[j][i] = matrix[i][j];
}
}
result
}
fn print_matrix<T: std::fmt::Display>(matrix: &Vec<Vec<T>>) {
for row in matrix {
for val in row {
print!("{} ", val);
}
println!();
}
}
fn main() {
let matrix = vec![
vec![1, 2, 3],
vec![4, 5, 6],
vec![7, 8, 9],
];
let t = transpose(&matrix);
print_matrix(&t);
}
/*
run:
1 4 7
2 5 8
3 6 9
*/