2017-04-21 2 views
0

Ich lese den Code mein Freund schrieb für seinen Turm der Hanoi-Lösung. Aber es ist schwer für mich herauszufinden, was sein Code macht, da ich seine Init-Konfiguration und Endkonfiguration nicht verstehe.turm von hanoi anfängliche konfiguration?

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) 

Hier hat er init = "ABCBA" und final = "BCBAC". Der Code funktioniert gut, aber ich verstehe nicht, warum er das macht.

Jede Hilfe wird geschätzt.

Antwort

0

Init und final Konfigurationen sind nur die Reihenfolge der Festplatten Größe von groß zu klein und ihre jeweiligen Stab, bezeichnet als ein Buchstabe (A, B oder C in diesem Fall).

init = "ABCBA" ist, wenn Sie die größte Festplatte bei 'A' haben, zweitgrößte bei 'B', drittgrößte bei 'C' und so weiter.

Sprich: Sie haben

init = "AB" 
final = "AA" 

das Programm ausgeben würde

move from B to A 

, da Sie die kleinere Scheibe haben bei B sitzt, alles, was Sie tun müssen, ist es zu A bewegen AA zu erhalten .

Verwandte Themen