ZigZag 是用在图像压缩中的一个算法,对于任意二维数组 ar[x_max][y_max] 按照下面的顺序遍历
?
直接放代码,思路就是凑一个最大范围的三角形,代码可以更精简。
/*ZigZag遍历任意二维数组
*/
global ar:=object()
a=5 ;行
b=7 ;列
c :=a+b-1 ;对角线数量
d:=a>b ? a : b
make_array(a,b)
loop, % c
{
sn2:=a_index
loop, % sn2
{
if (mod(sn2,2)=0)
{
tmp.=ar[a_index, sn2+1-a_index] ? ar[a_index, sn2+1-a_index] . "|" : ""
}
else
{
tmp.=ar[sn2+1-a_index, a_index] ? ar[sn2+1-a_index, a_index] . "|" : ""
}
}
}
msgbox, % tmp
return
/*生成一个二维数组
*/
make_array(x,y)
{
loop, % x
{
aa:=A_Index
loop, % y
{
ar[aa,A_index]:=a_index+(aa-1)*y
}
}
return, % ar
}