2017-04-21 33 views
0

我正在閱讀我的朋友寫給他的河內解決方案的代碼。但是我很難弄清楚他的代碼是幹什麼的,因爲我不明白他的初始化配置和結束配置。河內塔的初始配置?

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」。代碼工作正常,但我不明白他爲什麼這樣做。

任何幫助表示讚賞。

回答

0

初始化和最終配置只是磁盤大小從大到小的順序以及它們各自的棒,表示爲字母(在這種情況下爲A,B或C)。

init = "ABCBA"是當你在'A'有最大的磁盤,'B'的第二大,在'C'的第三大'等等。

說,你有

init = "AB" 
final = "AA" 

程序將輸出

move from B to A 

,因爲你有較小的磁盤坐在B,你所要做的就是將它移動到一個獲得AA 。