如果已经问过这个确切的问题,我很抱歉......
我在 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/