河内塔的替代简单英语算法

Alternate plain English algorithm for Towers of Hanoi

河内塔拼图有四种通俗易懂的英文算法 available on Wikipedia,但当我第一次解这个谜题时,我想出了一个与我见过的任何解决方案都不同的算法。

维基百科算法:

  1. Iterative solution
  2. Simpler statement of iterative solution
  3. Equivalent iterative solution
  4. Recursive solution

当然,算法的结果是相同的,它们实际上只是对同一件事的不同思考方式,但我说的是描述过程的通俗英语方式。

我的流程是这样的:

  1. 永远不要连续移动同一个方块两次(显然)
  2. 优先向右移动
  3. 向右移动时,移动到最近的可以合法移动到的杆子。
  4. 向左移动时,移动到可以合法移动到的最远的杆子。

..

这些规则与算法的其他描述的不同之处在于:

我已经以编程方式对此进行了测试,它总能解决 (2^n)-1 移动中的难题,其中 n 是环数。

在我看来,我的描述确实与我找到的其他简单的英文描述不同。有没有人看过这个描述?如果有,请出示参考资料。

此解决方案是第一个 iterative solution 的单向版本。

单向解法和单向解法的区别在于单向解法不指定结束位置。

A simple solution for the toy puzzle: Alternate moves between the smallest piece and a non-smallest piece. When moving the smallest piece, always move it to the next position in the same direction (to the right if the starting number of pieces is even, to the left if the starting number of pieces is odd). If there is no tower position in the chosen direction, move the piece to the opposite end, but then continue to move in the correct direction. For example, if you started with three pieces, you would move the smallest piece to the opposite end, then continue in the left direction after that. When the turn is to move the non-smallest piece, there is only one legal move. Doing this will complete the puzzle in the fewest number of moves.

如果将方向的方向选择替换为围绕优先向右移动的单向解决方案中的规则,则单向版本的描述可以更改为单向。

我觉得你的描述和Iterative Solution差不多。想象一下帖子围绕一个圆形或三角形排列,mod 3 种样式。您的说明和维基百科的说明以查看事物的方式转化为同一事物。