w3resource

Python Math: Generate a square matrix filled with elements from 1 to n raised to the power of 2 in spiral order


Write a Python program to generate (given an integer n) a square matrix filled with elements from 1 to n raised to the power of 2 in spiral order.

Sample Solution:

Python Code:

#https://gist.github.com/Ray1988/6806c1b85af70388a277
def generateMatrix(n):
        if n<=0:
            return [] 

        matrix=[row[:] for row in [[0]*n]*n]
        
        row_st=0
        row_ed=n-1
        
        col_st=0
        col_ed=n-1
        current=1
        
        while (True):
            if current>n*n:
                break
            for c in range (col_st, col_ed+1):
                matrix[row_st][c]=current
                current+=1
            row_st+=1
            for r in range (row_st, row_ed+1):
                matrix[r][col_ed]=current
                current+=1
            col_ed-=1
            for c in range (col_ed, col_st-1, -1):
                matrix[row_ed][c]=current
                current+=1
            row_ed-=1
            for r in range (row_ed, row_st-1, -1):
                matrix[r][col_st]=current
                current+=1
            col_st+=1
        return matrix

print(list(generateMatrix(3)))

Sample Output:

[[1, 2, 3], [8, 9, 4], [7, 6, 5]] 

Pictorial Presentation:

Python Math: Generate a square matrix filled with elements from 1 to n raised to the power of 2 in spiral order

Flowchart:

Flowchart: Generate a square matrix filled with elements from 1 to n raised to the power of 2 in spiral order

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to create a range for floating numbers.
Next: Write a Python program to select a random date in the current year.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.