Safe Haskell | None |
---|---|
Language | Haskell2010 |
Breadth first search algorithms.
- data BfsDistance
- data MoveLegal
- apartBfs :: BfsDistance
- fillBfs :: (Point -> Point -> MoveLegal) -> (Point -> Point -> Bool) -> Point -> Array BfsDistance -> Array BfsDistance
- findPathBfs :: (Point -> Point -> MoveLegal) -> (Point -> Point -> Bool) -> Point -> Point -> Int -> Array BfsDistance -> Maybe [Point]
- accessBfs :: Array BfsDistance -> Point -> Maybe Int
- minKnownBfs :: BfsDistance
Public API
data BfsDistance Source
Weighted distance between points along shortest paths.
State of legality of moves between adjacent points.
apartBfs :: BfsDistance Source
The distance value that denote no legal path between points.
:: (Point -> Point -> MoveLegal) | is a move from known tile legal |
-> (Point -> Point -> Bool) | is a move from unknown legal |
-> Point | starting position |
-> Array BfsDistance | initial array, with |
-> Array BfsDistance | array with calculated distances |
Fill out the given BFS array.
findPathBfs :: (Point -> Point -> MoveLegal) -> (Point -> Point -> Bool) -> Point -> Point -> Int -> Array BfsDistance -> Maybe [Point] Source
Find a path, without the source position, with the smallest length.
The eps
coefficient determines which direction (or the closest
directions available) that path should prefer, where 0 means north-west
and 1 means north.
accessBfs :: Array BfsDistance -> Point -> Maybe Int Source
Access a BFS array and interpret the looked up distance value.
minKnownBfs :: BfsDistance Source
The minimal distance value assigned to paths that don't enter any unknown tiles.