河内塔初始配置?

tower of hanoi initial configuration?

我正在阅读我朋友为他的汉诺塔解决方案编写的代码。但是我很难弄清楚他的代码是做什么的,因为我不了解他的初始配置和结束配置。

def T(init, final):
    if len(init) == 0:
        return 
    if init[0] == final[0]:
        T(init[1:], final[1:])
    else:
        fro = init[0]
        to = final[0]
        spare = other(init[0], final[0])
        ic = spare * (len(init) - 1)
        T(init[1:], ic)
        print("move from %s to %s  " % (fro, to))
        T(ic, final[1:])

def other(char1, char2):
    towers = "ABC"
    towers = towers.replace(char1, "")
    towers = towers.replace(char2, "")
    return towers

init = "ABCBA"
final = "BCBAC"
T(init, final)

这里,他有init="ABCBA"和final="BCBAC"。代码工作正常,但我不明白他为什么这样做。

感谢任何帮助。

初始配置和最终配置只是磁盘大小从大到小的顺序以及它们各自的杆,用字母表示(在本例中为 A、B 或 C)。

init = "ABCBA" 是最大的磁盘 'A',第二大的 'B',第三大的 'C' 等等。

说,你有

init = "AB"
final = "AA"

程序会输出

move from B to A  

因为你的小盘在B,你只要把它移到A就可以得到AA。