Skip to content

Instantly share code, notes, and snippets.

@ferristseng
Created May 11, 2015 18:46
Show Gist options
  • Select an option

  • Save ferristseng/f36f8dca15094cb479da to your computer and use it in GitHub Desktop.

Select an option

Save ferristseng/f36f8dca15094cb479da to your computer and use it in GitHub Desktop.
Print matrix diagonally practice
pub fn print_matrix_diag(mm: &[&[usize]]) {
assert!(mm.len() > 0);
let xdim = mm[0].len();
let ydim = mm.len();
let maxdim = xdim + ydim - 1;
println!("---");
for i in 0..maxdim {
print_el(mm, i as isize, 0, xdim, ydim);
println!("");
}
println!("---");
}
fn print_el(mm: &[&[usize]], x: isize, y: isize, xdim: usize, ydim: usize) {
if x < 0 { return }
if x < xdim as isize && y < ydim as isize && y >= 0 {
print!("{:?} ", mm[y as usize][x as usize]);
}
print_el(mm, x - 1, y + 1, xdim, ydim);
}
fn main() {
let matrix: [&[usize]; 3] = [
&[1, 2],
&[3, 4],
&[5, 6]
];
let matrix0: [&[usize]; 3] = [
&[1, 2, 3],
&[4, 5, 6],
&[7, 8, 9]
];
let matrix1: [&[usize]; 5] = [
&[1 ,2 ,3 ,4 ,5 ,6 ],
&[7 ,8 ,9 ,10,11,12],
&[13,14,15,16,17,18],
&[19,20,21,22,23,24],
&[25,26,27,28,29,30]
];
let matrix2: [&[usize]; 7] = [
&[1],
&[2],
&[3],
&[4],
&[5],
&[6],
&[7],
];
println!("");
print_matrix_diag(matrix.as_ref());
print_matrix_diag(matrix0.as_ref());
print_matrix_diag(matrix1.as_ref());
print_matrix_diag(matrix2.as_ref());
assert!(false);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment