Башня Ханоя первоначальной конфигурации?

Я читаю код, который мой друг написал для своего решения Ханойской башни. Но мне трудно понять, что делает его код, так как я не понимаю его конфигурацию инициализации и конечную конфигурацию.

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.

Другие вопросы по тегам