【发布时间】:2019-10-09 19:54:09
【问题描述】:
我正在尝试在 ruby 中创建一个简单的家谱,我可以在其中通过母节点添加子节点。此外,当我将名称和关系作为输入时,我应该能够将输出作为与给定人名相关的人名。
例如,我应该能够执行以下操作
add_child('Tina', 'bob') // which will add bob as a child node to Tina
get_relation(bob, maternal_uncles) // which should output all the siblings of Tina in this case.
哪种数据结构最适合实现这一点以及如何在 ruby 中实现它?在我的研究中,我发现图表是一种很好的方法,我从 2 天以来一直在研究它的实施,但找不到任何解决方案。
我尝试了以下库
RubyTree https://github.com/evolve75/RubyTree - 这帮助我获得了父母,兄弟姐妹,祖父母的关系,但我想不出我怎么能用它来获得像父亲的兄弟(舅舅),妻子的姐妹(嫂子)这样的关系等等
weighted graph https://github.com/msayson/weighted_graph - 我用 0 代表配偶,用 1 代表孩子。我不能从这里去任何地方。我对如何获得特定人的父母和孩子感到困惑。
我对@987654329@ 和rgl gem 进行了一些探索,但我无法将它们应用到我的应用程序中。
请帮忙。提前致谢!
【问题讨论】:
-
使用Struct有什么问题?
-
这是一个有趣的问题,但如果您将一个示例与一系列您希望回答的与示例相关的问题一起包含在内,它会大大改进。回想起来,我认为这样的例子是必不可少的。
-
当
add_child('Tina', 'bob')有两个 Tina 时会发生什么?还是这种情况不会出现? -
如果你在做朴素的树而不是任何结构都可以做,但在现实世界中事情变得如此复杂,你需要一个循环图结构。
标签: ruby data-structures graph tree