简体   繁体   中英

Haskell: Call a function with each element in a list

I am making a sudoku solving program and I have a potentialNbrsAt function that gets the numbers that could be at position x y.

Now, I am trying to get the intersect of each lists of potential numbers in a column. Something like the onlyOnePlaceForNbrInCol function bellow.

Code:

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???

I think onlyOnePlaceForNbrInCol should, at some point, call potentialNbrsAt with each numbers from 0 to 8 as an argument for y. Telling me how to do this would greatly help.

因此,您试图确定是否所有数字[0..8]满足给定的谓词。

What about [ potentialNbrsAt xy sudoku | y <- [0..8] ] [ potentialNbrsAt xy sudoku | y <- [0..8] ] ? This gives you a list of all the results for such values of y .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM