List Haskell:使用列表中的每个元素调用函数
我正在做一个数独解题程序,我有一个List Haskell:使用列表中的每个元素调用函数,list,haskell,functional-programming,List,Haskell,Functional Programming,我正在做一个数独解题程序,我有一个potentialNbrsAt函数,它可以得到可能在xy位置的数字 现在,我试图得到列中每个潜在数字列表的交集。类似下面的onlyOnePlaceForNbrInCol函数 代码: 我认为,在某个时候,只有代替NBRINCOL的人才应该使用0到8之间的每个数字调用potentialNbrsAt作为y的参数。告诉我怎么做会有很大帮助。所以您正在尝试确定数字[0..8]是否满足给定的谓词。关于[potentialNbrsAt x y数独| y我没想到会这么容易。Th
potentialNbrsAt
函数,它可以得到可能在xy位置的数字
现在,我试图得到列中每个潜在数字列表的交集。类似下面的onlyOnePlaceForNbrInCol
函数
代码:
我认为,在某个时候,只有代替NBRINCOL的人才应该使用0到8之间的每个数字调用potentialNbrsAt作为y的参数。告诉我怎么做会有很大帮助。所以您正在尝试确定数字
[0..8]
是否满足给定的谓词。关于[potentialNbrsAt x y数独| y我没想到会这么容易。Thx!PS:当数字9或div
操作符出现在数独解算器中时,它显示出建模不足:网格没有二维(9x9),而是四维(3x3x3x3)。在德语中,“die anschaung is auch of der Feind des Verständnisses。”
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???