// A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same elements
fun isToeplitz(matrix: Array<IntArray>): Boolean {
val rows = matrix.size
val cols = matrix[0].size
for (i in 1 until rows) {
for (j in 1 until cols) {
println("$i $j - ${matrix[i][j]} : ${matrix[i - 1][j - 1]}")
if (matrix[i][j] != matrix[i - 1][j - 1]) {
return false
}
}
println("-----------")
}
return true
}
fun main() {
val matrix = arrayOf(
intArrayOf(2, 7, 9, 8),
intArrayOf(4, 2, 7, 9),
intArrayOf(3, 4, 2, 7),
intArrayOf(0, 3, 4, 2),
intArrayOf(6, 0, 3, 4)
)
if (isToeplitz(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
*/