fork download
  1. def s(n, o=1):
  2. p = [(1 if i % 2 == 0 else n)*((-1)**((i//2) % 2)) for i in range(2*n-1) for j in range(n-(i+1)//2)]
  3. q = [sum(p[:i+1]) for i in range(n*n)][::o]
  4. r = sorted([i+1 for i in range(n*n)], key=lambda x: q[x-1])
  5. return [r[n*i:n*(i+1)] for i in range(n)]
  6.  
  7. n = 4
  8. p = len(str(n*n))
  9.  
  10. m = s(n)
  11. print('\n'.join(' '.join(str(y).rjust(p) for y in x) for x in m))
  12.  
  13. print('-'*(p+1)*n)
  14.  
  15. m = s(n, -1)
  16. print('\n'.join(' '.join(str(y).rjust(p) for y in x) for x in m))
Success #stdin #stdout 0.02s 27704KB
stdin
Standard input is empty
stdout
 1  2  3  4
12 13 14  5
11 16 15  6
10  9  8  7
------------
16 15 14 13
 5  4  3 12
 6  1  2 11
 7  8  9 10