2011-10-04 60 views
0

我正在使用C#,但将来可能需要在其他语言中使用它。连接电线 - 算法

许多游戏都有这样的谜题。有一组电线(有两种电线:直线和曲线),有一个信号来自的地方,信号必须离开的地方。但是电线的排列不允许发生这种情况。您必须转动一些电线才能为信号创建路径。

是的,我试图再次找到美洲大陆,以便在未来不再尝试找到它。

在未来的某个地方,我也会尝试同样的事情,但这次使用的是将信号分成2或3个信号的导线。

问题是,我想不出一种算法,我可以想象如何将它变成一个代码。我一直在想一些,我想不出什么好的。

那么,你能帮助我吗?我将能够将该算法理解为“程序必须做什么”,但我基本上需要帮助将算法理解为“如何编写代码”。

谢谢!

+1

你究竟想要什么?执行解决方案(并找出它是否正确)或算法来解决这个难题的算法?规则究竟是什么?它是否类似于“连接管道”游戏? – svick

+0

一两张照片会有所帮助。一般来说,如果您知道'程序需要做什么',您可以先将其转化为代码,首先将其分解成不需要人类理解的操作,然后将这些操作转换为代码。如果你必须在第二部分中思考,你就知道你没有完全完成第一部分。 – AakashM

+0

为了回答这个问题,你需要知道很多事情,唯一的答案是“参加编程课程”。投票结束,因为它太模糊。 – Skizz

回答

1

看看一些maze generation algorithms - 他们做同样的事情,你正在寻找,这就是你需要创建网格。从我链接的人中挑选一个简单的“细胞雕刻师”;随机旋转所有的线材,等等!

在你的问题中留言指出,转弯的算法转换成代码涉及到它分解的点点滴滴 - 所以这就是我们要做的:

你会与潜在线位置的格栅开始(可能2D,但是3D游戏会非常棒)。为了产生一个可解的水平,你可以做一些事情 - 产生一个水平,看看它是否可解(坏),或产生一个解决的水平,然后“解决”它(更好)。正如我上面提到的,生成一个解决的关卡涉及到与迷宫生成非常相似的算法 - 一个解决的关卡会有很多可以穿越的“路径”,就像迷宫一样。解决这个问题只会绕过所有的线段,并旋转它们。

但是什么是迷宫一代?我链接到的资源包含一些适合您使用的算法 - 简单的随机DFS应该足够满足您的需求。

你会注意到我覆盖了涉及分支电线的一般情况,不包括分支意味着你必须做更多的编码,智能地“修剪”分支 - 也就是说,当你的一条真正路径回溯因为可能需要进行随机移动才能达到一个有趣的水平,所以会在一个角落里说出来。

你还应该注意,如果我理解正确,那么这种游戏的解决方案需要使用所有给定的线(我知道这样的一些游戏)。否则,考虑到上述一代战术,游戏可能会更简单。

+0

我需要一个如何编写代码的想法。当我发布这个问题时,我已经做了一个算法,但是我不知道如何连接代码中的线。但大约2个月前,我发现联盟找到了解决我的问题的算法。好极了!尽管如此,你的算法值得记住,但它不能回答我的问题。谢谢! – AlexSavAlexandrov

+0

亲爱的我 - 我完全误解了。哦,不客气。 – Filipq