Anticlockwise spiral view of diamond matrix elements in python

Python program for Anticlockwise spiral view of diamond matrix elements. Here mentioned other language solution.
# Python 3 program for
# Anticlockwise spiral view of diamond element in matrix
class SpiralTraversal :
# Method which is displaying the Anticlockwise spiral
# Of matrix in diamond(mid) element
def spiralView(self, matrix, x, y, p, q, k) :
# Find the middle column
midCol = y + (int((q - y) / 2))
# Get middle row (valid for odd square matrix)
midRow = midCol
# Matrix are divided into 4 section
# Starting of middle row and column in form of top
# Case A
# Top to Left-bottom
i = midCol
j = 0
while (i > y and k > 0) :
print(matrix[x + j][i], end =" ")
i -= 1
k -= 1
j += 1
# Case B
# Middle left to middle right bottom
i = y
j = 0
while (i <= midCol and k > 0) :
print(matrix[(midRow) + j][i], end =" ")
i += 1
k -= 1
j += 1
# Case C
# Middle bottom to middle right side
i = midCol + 1
j = 1
while (i <= q and k > 0) :
print(matrix[(p) - j][i], end =" ")
i += 1
k -= 1
j += 1
# Case D
# Middle right side to top middle
i = q - 1
j = 1
while (i > midCol and k > 0) :
print(matrix[(midRow) - j][i], end =" ")
i -= 1
k -= 1
j += 1
if (x + 1 <= p - 1 and k > 0) :
# Recursive call
self.spiralView(matrix, x + 1, y + 1, p - 1, q - 1, k)
def diamondAnticlockwise(self, matrix) :
row = len(matrix)
col = len(matrix[0])
# Check whether the given matrix is a valid odd shape or not
if (row != col or col % 2 == 0) :
# When Yes not a valid size
print("\nNot a valid perfect Odd square matrix")
return
# (row*col)-((col+1)/2)*4 are provide the value of number of
# Diamond element
self.spiralView(matrix, 0, 0, row - 1,
col - 1, (row * col) - (int((col + 1) / 2)) * 4)
def main() :
task = SpiralTraversal()
# Define matrix
matrix = [
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, -1, 15, 16],
[17, 18, 19, 20, 21],
[22, 23, 24, 25, 26]
]
task.diamondAnticlockwise(matrix)
if __name__=="__main__":
main()
Output
3 7 11 18 24 20 16 9 8 12 19 15 -1
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment