print matrix in spiral form python

Python program for Spiral traversal of matrix. Here problem description and explanation.

#  Python 3 program for 
#  Spiral form of matrix
class SpiralView :
	def spiral(self, data, startRow, 
               startCol, endRow, endCol, element) :
		i = startCol
		#  Left to right
		while (i <= endCol and element > 0) :
			element -= 1
			print("", data[startRow][i], end = " ")
			i += 1
		
		i = startRow + 1
		#  Top to down
		while (i <= endRow and element > 0) :
			element -= 1
			print("", data[i][endCol], end = " ")
			i += 1
		
		i = endCol - 1
		#  Bottom right to bottom-left
		while (i >= startCol and element > 0) :
			element -= 1
			print("", data[endRow][i], end = " ")
			i -= 1
		
		i = endRow - 1
		#  Bottom left to top
		while (i > startRow and element > 0) :
			element -= 1
			print("", data[i][startRow], end = " ")
			i -= 1
		
		if (startRow + 1 <= endRow - 1 and element > 0) :
			#  Recursive call
			self.spiral(data, startRow + 1, startCol + 1, 
                        endRow - 1, endCol - 1, element)
		
	

def main() :
	task = SpiralView()
	#  Given matrix
	matrix = [
		[1, 2, 3, 4, 5, 6],
		[22, 23, 24, 25, 26, 7],
		[21, 36, 37, 38, 27, 8],
		[20, 35, 42, 39, 28, 9],
		[19, 34, 41, 40, 29, 10],
		[18, 33, 32, 31, 30, 11],
		[17, 16, 15, 14, 13, 12]
	]
	row = len(matrix)
	col = len(matrix[0])
	#  Get the number of element
	element = row * col
	task.spiral(matrix, 0, 0, row - 1, col - 1, element)

if __name__ == "__main__": main()

Output

 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  31  32  33  34  35  36  37  38  39  40  41  42


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







© 2021, kalkicode.com, All rights reserved