📖 Scenario: You are working with a 2D grid of numbers, like a map or a spreadsheet. You want to collect all the numbers by moving around the edges first, then moving inward in a spiral pattern.
🎯 Goal: Build a program that takes a fixed 3x3 matrix and prints the numbers in the order you would see if you walked around the matrix in a spiral, starting from the top-left corner and moving right.
📋 What You'll Learn
Create a 3x3 matrix called matrix with the exact values [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Create variables top, bottom, left, and right to track the current edges of the matrix
Use a while loop to traverse the matrix in a spiral order using the edge variables
Collect the spiral order elements in a list called result
Print the result list at the end
💡 Why This Matters
🌍 Real World
Spiral traversal is useful in image processing, game development, and reading data in a pattern that covers all edges first.
💼 Career
Understanding matrix traversal helps in technical interviews and solving problems related to grids, maps, and 2D data structures.
Progress0 / 4 steps
1
Create the 3x3 matrix
Create a variable called matrix and set it to the exact 3x3 list of lists: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
DSA Python
Hint
Use square brackets to create a list of lists exactly as shown.
2
Set up edge variables
Create variables top, bottom, left, and right and set them to 0, 2, 0, and 2 respectively to represent the edges of the matrix
DSA Python
Hint
These variables mark the current edges of the matrix as you move inward.
3
Traverse the matrix in spiral order
Create an empty list called result. Use a while loop with the condition left <= right and top <= bottom. Inside the loop, add elements from the top row, right column, bottom row, and left column to result in spiral order. Update top, bottom, left, and right after each side is processed.
DSA Python
Hint
Remember to move the edges inward after processing each side.
4
Print the spiral order result
Write a print statement to display the result list.
DSA Python
Hint
The printed list should show the numbers in spiral order.
Practice
(1/5)
1. What is the main idea behind Spiral Matrix Traversal?
easy
A. Traverse the matrix in a spiral order starting from the top-left corner
B. Traverse the matrix row by row from left to right only
C. Traverse the matrix column by column from top to bottom only
D. Traverse the matrix diagonally from top-left to bottom-right
Solution
Step 1: Understand traversal pattern
Spiral traversal means moving around the matrix edges and gradually moving inward in a circular pattern.
Step 2: Identify starting point and direction
It starts at the top-left corner and moves right, then down, then left, then up, repeating until all elements are visited.
Final Answer:
Traverse the matrix in a spiral order starting from the top-left corner -> Option A
Quick Check:
Spiral traversal = circular edge-wise movement [OK]
Hint: Think of peeling an onion layer by layer in a circle [OK]
Common Mistakes:
Confusing spiral with row-wise or column-wise traversal
Starting traversal from the wrong corner
Ignoring direction changes after each edge
2. Which of the following Python code snippets correctly initializes the boundaries for spiral traversal of a matrix named matrix?
easy
A. top = 1; bottom = len(matrix); left = 1; right = len(matrix[0])
B. top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1
C. top = 0; bottom = len(matrix); left = 0; right = len(matrix[0])
D. top = 1; bottom = len(matrix) - 1; left = 1; right = len(matrix[0]) - 1
Solution
Step 1: Understand matrix boundaries
For a matrix, top and left start at 0, bottom is last row index (length - 1), right is last column index (length - 1).
Step 2: Check each option
top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1 correctly sets top=0, bottom=len(matrix)-1, left=0, right=len(matrix[0])-1 which matches the matrix indices.
Final Answer:
top = 0; bottom = len(matrix) - 1; left = 0; right = len(matrix[0]) - 1 -> Option B
Quick Check:
Boundary indices start at 0 and end at length-1 [OK]
Hint: Remember Python indexing starts at 0, so subtract 1 for last index [OK]
Common Mistakes:
Using length instead of length - 1 for bottom and right
Starting top or left at 1 instead of 0
Mixing row and column lengths
3. What is the output of the following Python code?
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = []
top, bottom = 0, 2
left, right = 0, 2
while top <= bottom and left <= right:
for i in range(left, right + 1):
result.append(matrix[top][i])
top += 1
for i in range(top, bottom + 1):
result.append(matrix[i][right])
right -= 1
for i in range(right, left - 1, -1):
result.append(matrix[bottom][i])
bottom -= 1
for i in range(bottom, top - 1, -1):
result.append(matrix[i][left])
left += 1
print(result)
medium
A. [1, 2, 3, 6, 9, 8, 7, 4, 5]
B. [1, 2, 3, 6, 9, 8, 7, 5, 4]
C. [1, 2, 3, 6, 9, 7, 8, 4, 5]
D. [1, 2, 3, 6, 9, 8, 7, 4]
Solution
Step 1: Traverse top row left to right
Elements: 1, 2, 3 added to result.
Step 2: Traverse right column top to bottom
Elements: 6, 9 added to result.
Step 3: Traverse bottom row right to left
Elements: 8, 7 added to result.
Step 4: Traverse left column bottom to top
Element: 4 added to result.
Step 5: Inner layer traversal
Only element 5 remains, added last.
Final Answer:
[1, 2, 3, 6, 9, 8, 7, 4, 5] -> Option A
Quick Check:
Spiral order = [1,2,3,6,9,8,7,4,5] [OK]
Hint: Follow edges clockwise, then move inward layer by layer [OK]
Common Mistakes:
Skipping the last inner element
Repeating elements or missing elements
Wrong direction in bottom or left traversal
4. The following code attempts spiral traversal but produces an error. What is the main bug?
matrix = [[1,2,3],[4,5,6],[7,8,9]]
top, bottom = 0, 2
left, right = 0, 2
result = []
while top <= bottom and left <= right:
for i in range(left, right + 1):
result.append(matrix[top][i])
top += 1
for i in range(top, bottom + 1):
result.append(matrix[i][right])
right -= 1
for i in range(right, left - 1, -1):
result.append(matrix[bottom][i])
bottom -= 1
for i in range(bottom, top - 1, -1):
result.append(matrix[i][left])
left += 1
print(result)
medium
A. The code uses incorrect range in the first for loop
B. The code uses wrong indices for left and right boundaries
C. The code does not check if top <= bottom before traversing bottom row
D. The code misses incrementing the left boundary
Solution
Step 1: Analyze loop conditions
The while loop checks top <= bottom and left <= right before each full cycle.
Step 2: Identify missing checks inside loop
After updating top and right, the code traverses bottom row and left column without checking if top <= bottom or left <= right again, causing index errors when boundaries cross.
Final Answer:
The code does not check if top <= bottom before traversing bottom row -> Option C
Quick Check:
Boundary checks needed before each edge traversal [OK]
Hint: Check boundaries before each edge traversal inside the loop [OK]