fork download
  1. def spiral_from_center(n):
  2. # створюємо матрицю нулями
  3. matrix = [[0 for _ in range(n)] for _ in range(n)]
  4.  
  5. # координати центру
  6. x = y = n // 2
  7. num = 1
  8. matrix[y][x] = num
  9.  
  10. # напрямки (вправо, вниз, вліво, вгору)
  11. directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
  12. step = 1
  13.  
  14. while num < n * n:
  15. for i, (dx, dy) in enumerate(directions):
  16. for _ in range(step):
  17. if num >= n * n:
  18. break
  19. x += dx
  20. y += dy
  21. num += 1
  22. if 0 <= x < n and 0 <= y < n:
  23. matrix[x][y] = num
  24. if i % 2 == 1:
  25. step += 1
  26.  
  27. return matrix
  28.  
  29.  
  30. # --- головна програма ---
  31. n = 17
  32. matrix = spiral_from_center(n)
  33.  
  34. # гарне виведення квадратом
  35. for row in matrix:
  36. print(" ".join(f"{x:3}" for x in row))
  37.  
Success #stdin #stdout 0.1s 14136KB
stdin
Standard input is empty
stdout
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289
272 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
271 210 157 158 159 160 161 162 163 164 165 166 167 168 169 170 227
270 209 156 111 112 113 114 115 116 117 118 119 120 121 122 171 228
269 208 155 110  73  74  75  76  77  78  79  80  81  82 123 172 229
268 207 154 109  72  43  44  45  46  47  48  49  50  83 124 173 230
267 206 153 108  71  42  21  22  23  24  25  26  51  84 125 174 231
266 205 152 107  70  41  20   7   8   9  10  27  52  85 126 175 232
265 204 151 106  69  40  19   6   1   2  11  28  53  86 127 176 233
264 203 150 105  68  39  18   5   4   3  12  29  54  87 128 177 234
263 202 149 104  67  38  17  16  15  14  13  30  55  88 129 178 235
262 201 148 103  66  37  36  35  34  33  32  31  56  89 130 179 236
261 200 147 102  65  64  63  62  61  60  59  58  57  90 131 180 237
260 199 146 101 100  99  98  97  96  95  94  93  92  91 132 181 238
259 198 145 144 143 142 141 140 139 138 137 136 135 134 133 182 239
258 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 240
257 256 255 254 253 252 251 250 249 248 247 246 245 244 243 242 241