Башня Ханоя первоначальной конфигурации?
Я читаю код, который мой друг написал для своего решения Ханойской башни. Но мне трудно понять, что делает его код, так как я не понимаю его конфигурацию инициализации и конечную конфигурацию.
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". Код работает нормально, но я не понимаю, почему он это делает.
Любая помощь приветствуется.
1 ответ
Начальная и конечная конфигурации - это всего лишь порядок размеров дисков от большого до маленького, и их соответствующие стержни обозначаются буквой (в данном случае A, B или C).
init = "ABCBA"
когда у вас самый большой диск в "A", второй по величине в "B", третий по величине в "C" и так далее.
Скажи у тебя
init = "AB"
final = "AA"
программа выдаст
move from B to A
так как у вас есть диск меньшего размера в B, все, что вам нужно сделать, это переместить его в A, чтобы получить AA.