Haskell - 数独中的空白单元格
Haskell - Blank cells in a sudoku
很抱歉,如果这个确切的问题已经被问到...
我在 Haskell 有一个数独游戏,希望能在这里提供一些反馈。
目标是实现一个表示仅包含空白单元格的数独的函数,然后将其命名为allBlankSudoku :: Sudoku
,其中
data Sudoku = Sudoku [[Maybe Int]]
你应该使用列表理解或映射函数来做到这一点,
map :: (a -> b) -> [a] -> [b]
这是我的看法:
allBlankSudoku :: Sudoku
allBlankSudoku = Sudoku (map (replicate 9) (replicate 9 Nothing))
但是!这是我的问题:在说明中它说 "Do not use copy-and-paste programming here! Your definition does not need to be longer than a few short lines."
所以,我上面的代码是不是复制粘贴的?还有其他方法可以做到吗?注意:这只是 3 个任务中的第一个任务,所以我认为它应该不难。
不,这不是复制粘贴,您让您的程序在此处进行复制粘贴。复制粘贴代码是关于重复 源代码 的行或块。比如cell_0_0 = nothing
、cell_0_1 = nothing
等。其实你的代码看起来挺简洁的。
此处复制粘贴编程可能意味着您的教授不想要:
allBlank = Sudoku [[Nothing,Nothing,Nothing ... ]
,[Nothing,Nothing,Nothing ...
...
]
顺便提一下,我想
allBlank = Sudoku (replicate 9 (replicate 9 Nothing))
对我来说更容易理解:)
如果您需要使用列表理解,您可以这样做:
[ [ Nothing | x <- [1..9] ] | y <- [1..9] ]
复制粘贴编程就是复制一行代码并多次粘贴以完成相同的事情。
递归是要走的路。
很抱歉,如果这个确切的问题已经被问到...
我在 Haskell 有一个数独游戏,希望能在这里提供一些反馈。
目标是实现一个表示仅包含空白单元格的数独的函数,然后将其命名为allBlankSudoku :: Sudoku
,其中
data Sudoku = Sudoku [[Maybe Int]]
你应该使用列表理解或映射函数来做到这一点,
map :: (a -> b) -> [a] -> [b]
这是我的看法:
allBlankSudoku :: Sudoku
allBlankSudoku = Sudoku (map (replicate 9) (replicate 9 Nothing))
但是!这是我的问题:在说明中它说 "Do not use copy-and-paste programming here! Your definition does not need to be longer than a few short lines."
所以,我上面的代码是不是复制粘贴的?还有其他方法可以做到吗?注意:这只是 3 个任务中的第一个任务,所以我认为它应该不难。
不,这不是复制粘贴,您让您的程序在此处进行复制粘贴。复制粘贴代码是关于重复 源代码 的行或块。比如cell_0_0 = nothing
、cell_0_1 = nothing
等。其实你的代码看起来挺简洁的。
此处复制粘贴编程可能意味着您的教授不想要:
allBlank = Sudoku [[Nothing,Nothing,Nothing ... ]
,[Nothing,Nothing,Nothing ...
...
]
顺便提一下,我想
allBlank = Sudoku (replicate 9 (replicate 9 Nothing))
对我来说更容易理解:)
如果您需要使用列表理解,您可以这样做:
[ [ Nothing | x <- [1..9] ] | y <- [1..9] ]
复制粘贴编程就是复制一行代码并多次粘贴以完成相同的事情。 递归是要走的路。