fn rotate90_clockwise(matrix: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
let rows = matrix.len();
let cols = matrix[0].len();
// Create a new rotated matrix
let mut rotated = vec![vec![0; rows]; cols];
// Map values to rotated positions
for i in 0..rows {
for j in 0..cols {
rotated[j][rows - 1 - i] = matrix[i][j];
}
}
rotated
}
fn print_matrix(matrix: &Vec<Vec<i32>>) {
for row in matrix {
println!("{}", row.iter().map(|x| x.to_string()).collect::<Vec<String>>().join(" "));
}
}
fn main() {
let matrix = vec![
vec![1, 2, 3, 4],
vec![5, 6, 7, 8],
vec![9, 10, 11, 12],
];
println!("Original Matrix:");
print_matrix(&matrix);
let rotated = rotate90_clockwise(matrix);
println!("\nRotated Matrix:");
print_matrix(&rotated);
}
/*
run:
Original Matrix:
1 2 3 4
5 6 7 8
9 10 11 12
Rotated Matrix:
9 5 1
10 6 2
11 7 3
12 8 4
*/