Meadowfield
Meadowfield 村不是很大。 它由 11 个地点和 14 条道路组成。 它可以用roads数组来描述:
const roads = ["Alice's House-Bob's House", "Alice's House-Cabin","Alice's House-Post Office", "Bob's House-Town Hall","Daria's House-Ernie's House", "Daria's House-Town Hall","Ernie's House-Grete's House", "Grete's House-Farm","Grete's House-Shop", "Marketplace-Farm","Marketplace-Post Office", "Marketplace-Shop","Marketplace-Town Hall", "Shop-Town Hall"];

村里的道路网络形成了一个图。 图是节点(村里的地点)与他们之间的边(道路)的集合。 这张图将成为我们的机器人在其中移动的世界。
字符串数组并不易于处理。 我们感兴趣的是,我们可以从特定地点到达的目的地。 让我们将道路列表转换为一个数据结构,对于每个地点,都会告诉我们从那里可以到达哪些地点。
function buildGraph(edges) {let graph = Object.create(null);function addEdge(from, to) {if (graph[from] == null) {graph[from] = [to];} else {graph[from].push(to);}}for (let [from, to] of edges.map(r => r.split("-"))) {addEdge(from, to);addEdge(to, from);}return graph;}const roadGraph = buildGraph(roads);
给定边的数组,buildGraph创建一个映射对象,该对象为每个节点存储连通节点的数组。
它使用split方法,将形式为"Start-End"的道路字符串,转换为两元素数组,包含起点和终点作为单个字符串。
