Zigzag的编排进行逆向推导
思路如下:
Zigzag的编排语法和计算思路很多,自己找了好久最后还是自己写了个逆向推导。已知列表的排序已经是按照Zigzag的编排顺序。将列表进行Zigzag,矩阵排序进行输出。
import numpy as np
def Z_sort(rect):
# 指定下标
transform = [
0,
1, 7,
14, 8, 2,
3, 9, 15, 21,
28, 22, 16, 10, 4,
5, 11, 17, 23, 29, 35,
42, 36, 30, 24, 18, 12, 6,
13, 39, 25, 31, 37, 43,
44, 38, 32, 26, 20,
27, 33, 39, 45,
46, 40, 29,
41, 47,
48
]
# 新建一个0的等长的列表
raseter_dct = [0 for i in range(49)]
for i in range(49):
id = transform[i]
raseter_dct[id] = rect[i]
res = np.array(raseter_dct).reshape(7, 7)
return res
if __name__ == "__main__":
rect = [-7, -6, 3, 0, 2, -2, -2, 1, 0, 0, 1, 0, -1, 1, -2, 1, 2, 2, 0, -1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(len(rect))
print(Z_sort(rect))