### Module `villageGraph`

* Exports `buildGraph` and `runRobot`
* `roads` is just formatted in the way `buildGraph` needs it, but not part of the module
* `roadGraph` is an instance of a built graph, not internal to nodule
* Dependencies: module `robot`

### Module `robot`

* Exports `randomRobot`, `routeRobot` and `goalOrientedRobot`; maybe `mailRoute`
* `randomPick` and `findRoute` are internal
  * Both are very likely to be found as existing NPM modules
  * I would almost always prefer an NPM module over writing my own

### Module `villageGraph`

* Exports `buildGraph` and `runRobot`
* `roads` is just formatted in the way `buildGraph` needs it, but not part of the module
* `roadGraph` is an instance of a built graph, not internal to nodule
* Dependencies: module `robot`

### Module `robot`

* Exports `randomRobot`, `routeRobot` and `goalOrientedRobot`; maybe `mailRoute`
* `randomPick` and `findRoute` are internal
    * Both are very likely to be found as existing NPM modules
    * I would often prefer an NPM module over writing my own, especially for complex things

### Remarks after reading suggested solution

* The `villageGraph` module could be more generic `graph`
    * To use an NPM `findRoute` routine, it has to export a graph in a format accepted by the corresponding NPM graph module (for example `dijkstrajs`)
    * `buildGraph` should accept an input less error prone than the dash separated strings
* Roads could live in a separate module, e.g., `roads`, containing the road data and the `roadGraph` binding
    * Would depend on `graph`, exports road graph
* `state` module containing `VillageState`
    * Depends on `roads`
    * Import `random-item` from NPM for `randomPick`
    * Contains also `runRobot` (state related); also exports `VillageState`
* Module `example-robots`
    * Depends on `roads`, exports robot functions
    * Also depends on `dijkstrajs`

Update after reading through hintsw
Update after reading through hintsw
