小编rpr*_*rpr的帖子

"功能"和"程序"有什么区别?

一般来说,我们都听说过编程语言中的函数过程.但是,我发现我几乎可以互换地使用这些术语(这可能是非常错误的).

所以,我的问题是:

它们的功能,用途和用途有何不同?

一个例子将不胜感激.

terminology procedure function

187
推荐指数
8
解决办法
31万
查看次数

谜语:方形拼图

最近几天,我已经从主人的研究中勉强自己,并一直专注于这个(看似简单的)难题:


这个10*10网格构成了100个可用场所的正方形.目标是从一个角落开始并遍历所有地方,相对于一些简单的"遍历规则"并达到数字100(如果你是一个程序员,则从99开始,而不是从0开始:)

遍历的规则是:
1.沿着垂直和水平轴跳两个空格
2.沿对角线一个空格跳
3.您只能访问每个方块一次

为了更好地可视化,这是一个有效的示例遍历(直到第8步):
示例Traverse http://img525.imageshack.us/img525/280/squarepuzzle.png


从手动的角度来说,我一直在努力解决这个难题.多年来,我一直试图手工解决它,但我从来没有超过96.听起来容易吗?试试自己,亲眼看看:)

因此,为了解决这个问题,我在Python中开发了一个简短的(大约100行代码)程序.我是这种语言的初学者,我想看看我能做些什么.
该程序只是应用详尽的尝试和错误解决技术.换句话说:蛮力深度首先搜索.

我的问题来自于此:遗憾的是,该程序无法解决问题,因为状态空间太大,以至于搜索永远不会找到解决方案.它可以毫不费力地达到98号(并打印出来),但仍然不是一个完整的解决方案.
该程序还打印出它到目前为止所涵盖的搜索树的长度.在几分钟内,例如,第65个元素的遍历列表将被覆盖到最后,只有一条路径.该数字以指数增加的时间段减少.我已经运行了很长一段时间的代码,并且无法超越50个障碍,现在我确信.

似乎这种简单的方法是不够的,除非我永远运行它.那么,如何才能更快,更高效地改进代码,以便提供解决方案呢?

基本上,我期待看到有关如何:

  1. 捕获并利用特定于此问题的领域知识
  2. 应用编程技巧/技巧来克服疲惫

    ..最终实现了一个实质性的解决方案.

提前致谢.


修订
感谢Dave Webb将问题与域名相关联:

这非常类似于Knight's Tour问题,该问题涉及将骑士绕棋盘移动而不重新访问同一个方块.基本上它是相同的问题,但具有不同的"导线规则".


python puzzle

21
推荐指数
4
解决办法
5029
查看次数

标签 统计

function ×1

procedure ×1

puzzle ×1

python ×1

terminology ×1