boris-vlasenko

Заполнить матрицу спиралью

Jun 29th, 2021 (edited)
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.62 KB | None | 0 0
  1. def f(n):
  2.     a = [[0 for c in range(n)] for r in range(n)]
  3.     k = 1
  4.     mode = 'right'
  5.     r = 0
  6.     c = 0
  7.     while k <= n**2:
  8.         a[r][c] = k
  9.         if mode == 'right':
  10.             c += 1
  11.             if c == n or a[r][c] != 0:
  12.                 c -= 1
  13.                 r += 1
  14.                 mode = 'down'
  15.  
  16.         elif mode == 'down':
  17.             r += 1
  18.             if r == n or a[r][c] != 0:
  19.                 r -= 1
  20.                 c -= 1
  21.                 mode = 'left'
  22.  
  23.         elif mode == 'left':
  24.             c -= 1
  25.             if c < 0 or  a[r][c] != 0:
  26.                 c += 1
  27.                 r -= 1
  28.                 mode = 'up'
  29.  
  30.         elif mode == 'up':
  31.             r -= 1
  32.             if r < 0 or a[r][c] != 0:
  33.                 r += 1
  34.                 c += 1
  35.                 mode = 'right'
  36.                
  37.         k += 1
  38.    
  39.     return a
  40.  
  41.  
  42. a = f(5)
  43. for x in a:
  44.     print(x)
  45.  
Add Comment
Please, Sign In to add comment