Данная задача является классической задачей «Ханойские башни». Для её решения можно использовать рекурсивный алгоритм. Вот как это можно сделать на языке Python:
def hanoi(n, source, target, auxiliary):
if n > 0:
# Перемещаем n-1 диск с исходного стержня на вспомогательный
hanoi(n-1, source, auxiliary, target)
# Перемещаем самый большой диск с исходного стержня на целевой
print(f"Перемещаем диск {n} с стержня {source} на стержень {target}")
# Перемещаем n-1 дисков с вспомогательного стержня на целевой
hanoi(n-1, auxiliary, target, source)
# Получаем входные данные
n = 8
# Вызываем функцию hanoi с исходными параметрами
hanoi(n, 1, 3, 2)
В данном коде функция hanoi
принимает следующие аргументы:
n
: количество колецsource
: номер исходного стержняtarget
: номер целевого стержняauxiliary
: номер вспомогательного стержня
Функция рекурсивно вызывает себя, перемещая n-1
колец с исходного стержня на вспомогательный, затем перемещает самое большое кольцо с исходного стержня на целевой, и, наконец, перемещает n-1
колец с вспомогательного стержня на целевой.
Каждый раз, когда мы перемещаем кольцо, мы выводим информацию о перемещении с помощью команды print
.
Обратите внимание, что начальные номера стержней заданы как 1, 2 и 3. Если вы хотите использовать другие номера стержней, просто измените соответствующие значения при вызове функции hanoi
.