fn mirror_matrix(matrix: &mut Vec<Vec<i32>>) {
let n = matrix.len();
// Ensure the matrix is square
for row in matrix.iter() {
assert_eq!(row.len(), n, "Matrix must be square");
}
// Swap elements above the diagonal with those below it
for i in 0..n {
for j in i + 1..n {
let temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
fn main() {
let mut matrix = vec![
vec![1, 2, 3],
vec![4, 5, 6],
vec![7, 8, 9],
];
println!("Original Matrix:");
for row in &matrix {
println!("{:?}", row);
}
// Mirror the matrix across the main diagonal
mirror_matrix(&mut matrix);
println!("\nMirrored Matrix:");
for row in &matrix {
println!("{:?}", row);
}
}
/*
run:
Original Matrix:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Mirrored Matrix:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
*/