Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy
- n = int(input())
- result = []
- for i in range(n):
- tmp = []
- for j in range(n):
- tmp.append(0)
- result.append(tmp)
- def right(array, begin, end, second, digit):
- for i in range(begin, end + 1):
- array[second][i] = digit
- digit += 1
- return digit
- def down(array, begin, end, second, digit):
- for i in range(begin, end + 1):
- array[i][second] = digit
- digit += 1
- return digit
- def left(array, begin, end, second, digit):
- for i in reversed(range(end, begin + 1)):
- array[second][i] = digit
- digit += 1
- return digit
- def up(array, begin, end, second, digit):
- for i in reversed(range(end, begin+1)):
- array[i][second] = digit
- digit += 1
- return digit
- digit = 1
- second = 0
- begin = 0
- end = n - 1
- while digit < n*n:
- digit = right(result, begin, end, second, digit)
- if digit > n**2:
- break
- digit = down(result, begin+1, end, end, digit)
- if digit > n**2:
- break
- digit = left(result, end - 1, begin, end, digit)
- if digit > n**2:
- break
- digit = up(result, end - 1, begin + 1, begin, digit)
- if digit > n**2:
- break
- second = begin + 1
- begin += 1
- end -= 1
- if(n %2==1):
- result[n//2][n//2] = n*n
- if n == 1:
- print('1')
- else:
- for i in range(n):
- tmp = " ".join([str(result[i][j]) for j in range(n)])
- print(tmp ,end='\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement