Safe Haskell | None |
---|

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.

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 IntSource

Access a BFS array and interpret the looked up distance value.

minKnownBfs :: BfsDistanceSource

The minimal distance value assigned to paths that don't enter any unknown tiles.