Haskell:使用列表中的每个元素调用一个函数

时间:2014-06-19 18:05:12

标签: list haskell functional-programming

我正在制作一个数独求解程序,我有一个potentialNbrsAt函数,可以得到位于x y位置的数字。

现在,我试图在列中获得每个潜在数字列表的交叉。类似于onlyOnePlaceForNbrInCol函数的下方。

代码:

potentialNbrsAt :: Int -> Int -> Sudoku -> [Int]
potentialNbrsAt x y sudoku = intersect rowMissingNbrs $ intersect colMissingNbrs sqrMissingNbrs
                where rowMissingNbrs = getMissingNbrs $ getRow y sudoku
                      colMissingNbrs = getMissingNbrs $ getCol x sudoku
                      sqrMissingNbrs = getMissingNbrs $ getSquare squareIndex sudoku
                      squareIndex    = 3 * (y `div` 3) + (x `div` 3)

onlyOnePlaceForNbrInCol :: Int -> Int -> Sudoku -> Bool
onlyOnePlaceForNbrInCol colIndex nbr sudoku = -- What goes here? Some pointers please???

我认为onlyOnePlaceForNbrInCol应该在某个时候调用potentialNbrsAt,每个数字从0到8作为y的参数。告诉我如何做到这一点会有很大帮助。

2 个答案:

答案 0 :(得分:1)

因此,您正在尝试确定数字[0..8]中的all是否符合给定的谓词。

答案 1 :(得分:1)

[ potentialNbrsAt x y sudoku | y <- [0..8] ]怎么样?这会为您提供y的所有结果的列表。