gpt4 book ai didi

ruby - 解析文本文件以创建对象

转载 作者:数据小太阳 更新时间:2023-10-29 08:29:07 26 4
gpt4 key购买 nike

我正在尝试解析以下形式的文本文件:

A B 2  
A G 6
A C 99
...
B C 7
B E 2
B G 99

现在,这些代表“节点”和它们之间实现最短路径算法的“成本”。我决定创建一个 Node 类,它有 2 个实例变量、一个名称和一个散列数组,这些散列是相邻节点和到达那里的成本。

我试图弄清楚如何将文件解析为来自每组行的一系列节点对象。成本 99 表示节点未连接。

最佳答案

首先,您还应该有一个 Graph 类来管理节点和边。然后像这样的事情应该让你开始:

g = Graph.new
File.open('your_data_file').each do |line|
n1, n2, wt = line.split(/\s+/)
n1 = g.find_or_create_node(n1)
n2 = g.find_or_create_node(n2)
wt = wt.to_i
g.add_edge(n1, n2, wt) if(wt != 99)
end
# g is now your fully populated graph.

图表 g 跟踪它拥有的节点,因此 find_or_create_node 可以返回节点(如果它已经存在)或者创建它并缓存它(如果不存在)。 add_edge 方法会将 n1n2 与权重为 wt.to_i 的边连接起来。

您的最短路径算法大概是对图形对象的方法调用。

关于ruby - 解析文本文件以创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5528268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com