首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过网络模拟器查找特定的“路由”

通过网络模拟器查找特定的“路由”
EN

Stack Overflow用户
提问于 2017-03-16 09:17:36
回答 1查看 98关注 0票数 1

我在为一个涉及网络的游戏写些东西。在这个游戏中,网络是一个类,到每个节点的“连接”被格式化如下:

代码语言:javascript
复制
network.nodes = [router, computer1, computer2]
network.connections = [ [1, 2], [0], [0] ]

"network.nodes“中的每个迭代与"network.connections”中的每个迭代并行工作,意思是"network.connections“表示连接到的所有节点"network.nodes”。我试图在网络类中编写一个简单的函数,它可以找到从路由器( "network.connections“)开始的路由,然后再找到一个特定的”节点“。我越想这个问题,答案就越复杂。

在这种情况下,非常简单的情况下,它应该返回如下

代码语言:javascript
复制
[router, computer1]

如果我想找到一条通往"computer1“的路线,我想看看,但我需要的是一些能与更复杂的网络模拟一起工作的东西。

它基本上是一个计算机网络的模拟器。但是在这个游戏中,我需要能够准确地知道什么节点可以通过移动到达特定的目标。任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 09:27:59

不如放弃.nodes.connections,把它们保存在一个数据结构中,就像字典一样。

代码语言:javascript
复制
network.nodes = {"router": [computer1, computer2],
                 "computer1": [router],
                 "computer2": [router]
                 }

您甚至可以将字符串作为键丢弃,并使用对象本身:

代码语言:javascript
复制
network.nodes = {router: [computer1, computer2],
                 computer1: [router],
                 computer2: [router]
                 }

这样,如果您需要访问路由器的连接,可以这样做:

代码语言:javascript
复制
>>>network.nodes[router]
[computer1, computer2]

因为我对你的项目没有一个完整的概述,我不能只是给你一个函数来做,但是我可以试着指出正确的方向。

如果您将网络“映射”构建为字典,并且network.nodes[router]返回[computer1, computer2],那么接下来需要做的就是network.nodes[computer1]network.nodes[computer2]

在注释中的防火墙示例中,您将重新构建包含防火墙的网络映射。所以字典应该是这样的:

代码语言:javascript
复制
network.nodes = {router: [firewall, computer2],
                firewall: [computer1]
                computer1: [firewall],
                computer2: [router]
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42829766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档