How to mirror a matrix across the main diagonal in Rust

1 Answer

0 votes
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]

*/
  
 

 



answered Aug 28 by avibootz
...