如果已经问过这个确切的问题,我很抱歉......

我在 Haskell 中有一个数独作业,希望得到一些反馈。

目标是实现一个表示仅包含空白单元格的数独的函数,然后将其命名为 allBlankSudoku :: Sudoku ,其中

data Sudoku = Sudoku [[Maybe Int]]

您应该使用列表推导式或 map 函数来执行此操作,
map :: (a -> b) -> [a] -> [b]

这是我的看法:
allBlankSudoku :: Sudoku

allBlankSudoku = Sudoku (map (replicate 9) (replicate 9 Nothing))

但!这是我的问题:在说明中它说“不要在这里使用复制和粘贴编程!您的定义不需要比几行短。”

那么,我的代码是否可以复制粘贴?有没有其他方法可以做到?注意:这只是 3 个任务中的第一个,所以我认为这应该不难。

最佳答案

这里的复制粘贴编程可能意味着你的教授不想要:

allBlank = Sudoku [[Nothing,Nothing,Nothing ... ]
                  ,[Nothing,Nothing,Nothing ...
                  ...
                  ]

顺便说一句,作为一个小调,我认为
allBlank = Sudoku (replicate 9 (replicate 9 Nothing))

对我来说更容易理解:)

如果您需要使用列表推导式,您可以执行以下操作:
[ [ Nothing | x <- [1..9] ] | y <- [1..9] ]

关于Haskell - 数独中的空白单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32833450/

10-10 18:57