Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. import numpy
  2. n = int(input())
  3. result = []
  4.  
  5. for i in range(n):
  6. tmp = []
  7. for j in range(n):
  8. tmp.append(0)
  9. result.append(tmp)
  10.  
  11. def right(array, begin, end, second, digit):
  12. for i in range(begin, end + 1):
  13. array[second][i] = digit
  14. digit += 1
  15. return digit
  16.  
  17. def down(array, begin, end, second, digit):
  18. for i in range(begin, end + 1):
  19. array[i][second] = digit
  20. digit += 1
  21. return digit
  22.  
  23. def left(array, begin, end, second, digit):
  24. for i in reversed(range(end, begin + 1)):
  25. array[second][i] = digit
  26. digit += 1
  27. return digit
  28.  
  29. def up(array, begin, end, second, digit):
  30. for i in reversed(range(end, begin+1)):
  31. array[i][second] = digit
  32. digit += 1
  33. return digit
  34.  
  35.  
  36. digit = 1
  37. second = 0
  38. begin = 0
  39. end = n - 1
  40. while digit < n*n:
  41. digit = right(result, begin, end, second, digit)
  42. if digit > n**2:
  43. break
  44. digit = down(result, begin+1, end, end, digit)
  45. if digit > n**2:
  46. break
  47. digit = left(result, end - 1, begin, end, digit)
  48. if digit > n**2:
  49. break
  50. digit = up(result, end - 1, begin + 1, begin, digit)
  51. if digit > n**2:
  52. break
  53. second = begin + 1
  54. begin += 1
  55. end -= 1
  56. if(n %2==1):
  57. result[n//2][n//2] = n*n
  58. if n == 1:
  59. print('1')
  60. else:
  61. for i in range(n):
  62. tmp = " ".join([str(result[i][j]) for j in range(n)])
  63. print(tmp ,end='\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement