0

リスト([[]、[]、[]])の各リストで要素の合計を作成し、それがそのリストに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))

私の試みで:

 [1,1,0,0]
 [1,0,0]
 [1,1,0]

私が欲しいもの:

 [1,1,0,0]
 [1,1,0,0]
 [0,1,1,0]

ありがとう。

4

1 に答える 1

6

リストのすべての要素に同じ操作を適用する場合は、明示的な再帰を使用しないmapでください。

func :: Matrix -> Matrix
func (Matr size xs) = Matr size $ map prependParity xs
  where prependParity x
               | even $ sum x  = 0:x
               | otherwise     = 1:x
于 2012-12-04T15:24:02.393 に答える