我正在阅读我朋友为他的河内解决方案塔写的代码。但是我很难弄清楚他的代码是什么,因为我不了解他的初始配置和结束配置。
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"最后=" BCBAC"。代码工作正常,但我不明白为什么他这样做。
感谢任何帮助。
答案 0 :(得分:0)
初始化和最终配置只是磁盘大小从大到小的顺序以及它们各自的棒,表示为字母(在这种情况下为A,B或C)。
init = "ABCBA"
是指您在'A'处拥有最大磁盘,在'B'处具有第二大磁盘,在'C'处具有第三大磁盘,等等。
说,你有
init = "AB"
final = "AA"
程序将输出
move from B to A
因为您有一个较小的磁盘位于B,所以您只需将其移至A即可获得AA。