Skip to main content

Spiral traversal of matrix in ruby

Ruby program for Spiral traversal of matrix. Here problem description and other solutions.

#  Ruby program for 
#  Spiral form of matrix
class SpiralView 
	def spiral(data, startRow, startCol, 
               endRow, endCol, element) 
		i = startCol
		#  Left to right
		while (i <= endCol && element > 0) 
			element -= 1
			print("  ", data[startRow][i])
			i += 1
		end

		i = startRow + 1
		#  Top to down
		while (i <= endRow && element > 0) 
			element -= 1
			print("  ", data[i][endCol])
			i += 1
		end

		i = endCol - 1
		#  Bottom right to bottom-left
		while (i >= startCol && element > 0) 
			element -= 1
			print("  ", data[endRow][i])
			i -= 1
		end

		i = endRow - 1
		#  Bottom left to top
		while (i > startRow && element > 0) 
			element -= 1
			print("  ", data[i][startRow])
			i -= 1
		end

		if (startRow + 1 <= endRow - 1 && element > 0) 
			#  Recursive call
			self.spiral(data, startRow + 1, 
                        startCol + 1, endRow - 1, 
                        endCol - 1, element)
		end

	end

end

def main() 
	task = SpiralView.new()
	#  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 = matrix.length
	col = matrix[0].length
	#  Get the number of element
	element = row * col
	task.spiral(matrix, 0, 0, row - 1, col - 1, element)
end

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




Comment

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