我想编写一个可以以Z字形方式遍历无限矩阵的函数。我希望在没有任何外部输入的情况下执行此操作,无需索引到矩阵,并且主要条件是矩阵是无限的。
例如,
1 2 3 ...
4 5 6 ...
7 8 9 ...
............
应提供[1,4,2,7,5,3 ....]
由于此计算基本上是构成矩阵的所有后向对角线的串联,因此我继续弄清楚如何获得前向对角线。如果我尝试使用向后对角线的类似方法,则可能需要反转列表。
当前,我有:
nums :: [Int]
nums = [1..]
fwdDiagonal :: [[a]] -> [a]
fwdDiagonal ((x:_):rows) = x : diagonal (map tail rows)
任何指导将不胜感激。