1

Тема: Заповнення массиву по часовій стрілці. 3-я версія

Дуже довго сам шукав тому ось .Приймає на  вхід число , на виході дає прямокутну матрицю заповнену числами від 1- до числа в квадраті.

n = int(input())
def spiral(n):
    dx,dy = 1,0           
    x,y = 0,0              
    myarray = [[None]* n for j in range(n)]
    for i in range(1,(n**2)+1):
        myarray[x][y] = i
        nx,ny = x+dx, y+dy
        if 0<=nx<n and 0<=ny<n and myarray[nx][ny] == None:
            x,y = nx,ny
        else:
            dx,dy = -dy,dx
            x,y = x+dx, y+dy
    return myarray
 
def printspiral(myarray):
    n = range(len(myarray))
    for y in n:
        for x in n:
            print ("%2i" % myarray[x][y],end='  ') 
        print ('\t')
printspiral(spiral(n))