I was reviewing the implementations of ZigZag on RosettaCode and I couldn't find any that showed how to construct just the coefficient itself, so I made one!
def zz(j, k, n): return \ ((2*int(k//2) + 3)*int(k//2) \ if 0 == k % 2 else \ (zz(0, k - 1, n) + 1)) \ if j == 0 else \ ((n**2-1-zz(n-1-j, n-1-k, n)) \ if n <= j + k else \ (zz(0, j + k, n) - (-1)**(j + k)*j)) if __name__ == '__main__': from numpy import matrix for n in [6, 8, 10]: print(repr(matrix([[zz(j, k, n) for k in range(n)] for j in range(n)])))
No comments:
Post a Comment