我编写了以下 Haskell 代码来返回 [[Int]] 的主要和次要对角线
getDiagonal' :: [[Int]] -> Int -> (Int -> Int) -> [Int]
getDiagonal' [] _ _ = []
getDiagonal' (x:xs) i fn = i' : getDiagonal' xs (fn i) fn
where i' = head $ drop i x
getPrimaryDiagonal :: [[Int]] -> [Int]
getPrimaryDiagonal x = getDiagonal' x 0 (+1)
getSecondaryDiagonal :: [[Int]] -> [Int]
getSecondaryDiagonal x = getDiagonal' x ((length x) - 1) (+(-1))
Run Code Online (Sandbox Code Playgroud)
但是,我会认为最后一行可能是以下内容,使用(-)与(+)
getSecondaryDiagonal x = getDiagonal' x ((length x) …Run Code Online (Sandbox Code Playgroud)