gpt4 book ai didi

haskell - 在 Haskell 中旋转矩阵

转载 作者:行者123 更新时间:2023-12-03 18:32:53 24 4
gpt4 key购买 nike

我有这种类型的 Mat a = [[a]] 来表示 Haskell 中的矩阵。
我必须编写一个旋转矩阵的函数,例如 [[1,2,3],[0,4,5][0,0,6]] 将变成 [[3,5,6],[2,4,0],[1,0,0]] 所以我做了这个:

rotateLeft :: Mat a->Mat a
rotateLeft [[]] = []
rotateLeft (h:t) = (map last (h:t)):(rotateLeft (map init (h:t)))

但输出是
[[3,5,6],[2,4,0],[1,0,0],[*** Exception: Prelude.last: empty list

我不知道在基本情况下放什么来避免这种异常。
感谢任何帮助。

最佳答案

您的列表将不会为空,而是一个空列表,您可以执行以下操作以根据第一个子列表进行模式匹配(假设Mat确保数据结构的一致性)

rl [] = []
rl ([]:_) = []
rl m = map last m : (rl (map init m))

rl mat
[[3,5,6],[2,4,0],[1,0,0]]

你错过了第二种情况。

关于haskell - 在 Haskell 中旋转矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34423279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com