How to generate an n x n matrix filled with elements from 1 to N^2 in spiral order in Python

1 Answer

0 votes
def generate_spiral_matrix(n):
    matrix = [[0 for _ in range(n)] for _ in range(n)]
    top, bottom = 0, n - 1
    left, right = 0, n - 1
    num = 1

    while top <= bottom and left <= right:
        # Fill top row
        for i in range(left, right + 1):
            matrix[top][i] = num
            num += 1
        top += 1

        # Fill right column
        for i in range(top, bottom + 1):
            matrix[i][right] = num
            num += 1
        right -= 1

        # Fill bottom row
        if top <= bottom:
            for i in range(right, left - 1, -1):
                matrix[bottom][i] = num
                num += 1
            bottom -= 1

        # Fill left column
        if left <= right:
            for i in range(bottom, top - 1, -1):
                matrix[i][left] = num
                num += 1
            left += 1

    return matrix


n = 3
spiral_matrix = generate_spiral_matrix(n)

# Print the matrix
for row in spiral_matrix:
    print("\t".join(str(val) for val in row))



'''
run

1	2	3
8	9	4
7	6	5

'''

 



answered Jun 25, 2025 by avibootz
...