// A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same elements
fn is_toeplitz(matrix: &[Vec<i32>]) -> bool {
let rows = matrix.len();
let cols = matrix[0].len();
for i in 1..rows {
for j in 1..cols {
println!("{} {} - {} : {}", i, j, matrix[i][j], matrix[i - 1][j - 1]);
if matrix[i][j] != matrix[i - 1][j - 1] {
return false;
}
}
println!("-----------");
}
true
}
fn main() {
let matrix = vec![
vec![2, 7, 9, 8],
vec![4, 2, 7, 9],
vec![3, 4, 2, 7],
vec![0, 3, 4, 2],
vec![6, 0, 3, 4],
];
if is_toeplitz(&matrix) {
println!("Matrix is a Toeplitz");
} else {
println!("Matrix is not a Toeplitz");
}
}
/*
run:
1 1 - 2 : 2
1 2 - 7 : 7
1 3 - 9 : 9
-----------
2 1 - 4 : 4
2 2 - 2 : 2
2 3 - 7 : 7
-----------
3 1 - 3 : 3
3 2 - 4 : 4
3 3 - 2 : 2
-----------
4 1 - 0 : 0
4 2 - 3 : 3
4 3 - 4 : 4
-----------
Matrix is a Toeplitz
*/