fork download
  1. '''
  2. Дополнительная
  3. Выведите таблицу размером n×n, заполненную числами от 1 до n2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере (здесь n=5):
  4.  
  5. Sample Input:
  6. 5
  7.  
  8. Sample Output:
  9. 1 2 3 4 5
  10. 16 17 18 19 6
  11. 15 24 25 20 7
  12. 14 23 22 21 8
  13. 13 12 11 10 9
  14. '''
  15.  
  16. n = int (input ())
  17. matrix = [[0 for j in range(n)] for i in range(n)]
  18.  
  19. matrix[0][0] = 1
  20. cur_i = 0
  21. cur_j = 0
  22. step_i = 0
  23. step_j = 1
  24. i = 1
  25.  
  26. while (i != n*n):
  27. i += 1
  28. if (step_i == 1):
  29. if ((cur_i + step_i == n) or (matrix[cur_i + step_i][cur_j] != 0)):
  30. step_i = 0
  31. step_j = -1
  32. cur_j += step_j
  33. else:
  34. cur_i += step_i
  35. elif (step_i == -1):
  36. if ((cur_i + step_i == -1) or (matrix[cur_i + step_i][cur_j] != 0)):
  37. step_i = 0
  38. step_j = 1
  39. cur_j += step_j
  40. else:
  41. cur_i += step_i
  42. elif (step_j == 1):
  43. if ((cur_j + step_j == n) or (matrix[cur_i][cur_j + step_j] != 0)):
  44. step_j = 0
  45. step_i = 1
  46. cur_i += step_i
  47. else:
  48. cur_j += step_j
  49. elif (step_j == -1):
  50. if ((cur_j + step_j == -1) or (matrix[cur_i][cur_j+step_j] != 0)):
  51. step_j = 0
  52. step_i = -1
  53. cur_i += step_i
  54. else:
  55. cur_j += step_j
  56.  
  57. matrix[cur_i][cur_j] = i
  58.  
  59.  
  60. for i in range (n):
  61. for j in range (n):
  62. print (matrix[i][j], end=' ')
  63. print()
Runtime error #stdin #stdout #stderr 0.01s 27704KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 16, in <module>
EOFError: EOF when reading a line