gpt4 book ai didi

list - 替换haskell中列表列表中的元素

转载 作者:行者123 更新时间:2023-12-02 05:42:31 26 4
gpt4 key购买 nike

我正在尝试编写这样的函数:

updateMatrix:: [[a]] -> a -> (x, y) ->[[a]]

这应该包含一个列表列表,例如:

[ [1, 2, 3, 4],
[5, 6, 7, 8]]

并将给定元素放在指定坐标处,因此,给定:

[ [1, 2, 3, 4],
[5, 6, 7, 8]] 9 (0, 1)

它应该返回

[ [1, 9, 3, 4],
[5, 6, 7, 8]]

如果不重建整个矩阵,我无法弄清楚如何做到这一点,请帮忙!

最佳答案

每次都需要重建矩阵。因此,只要您不需要高性能计算,就可以使用这个清晰的实现:

replace :: (a -> a) -> Int -> [a] -> [a]
replace f 0 (x:xs) = (f x):xs
replace f i (x:xs) = x : replace f (i-1) xs
replace f i [] = []

replace2D :: (a -> a) -> (Int, Int) -> [[a]] -> [[a]]
replace2D f (x,y) = replace (replace f y) x

你的函数是:

updateMatrix ll x c = replace2D (const x) c ll

关于list - 替换haskell中列表列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156078/

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