我想要一个函数,在列表的每个列表中([[],[],[]])生成元素的总和,如果它甚至添加到该列表0和1,否则.
我试过这个,但它只是对列表的头部正确,我不知道如何对其他人.
func :: Matrix -> Matrix
func (Matr size (x:xs))
|sum(x) `mod` 2 == 0 = (Matr size ((0:x):xs))
|otherwise = (Matr size ((1:x):xs))
Run Code Online (Sandbox Code Playgroud)
我的尝试:
[1,1,0,0]
[1,0,0]
[1,1,0]
Run Code Online (Sandbox Code Playgroud)
我想要的是:
[1,1,0,0]
[1,1,0,0]
[0,1,1,0]
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果要将相同的操作应用于列表的所有元素,请不要使用显式递归,让我们map为您执行此操作.
func :: Matrix -> Matrix
func (Matr size xs) = Matr size $ map prependParity xs
where prependParity x
| even $ sum x = 0:x
| otherwise = 1:x
Run Code Online (Sandbox Code Playgroud)