Даны три стержня, на один из которых нанизаны восемь колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов на другой стержень. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее — Python(Питон)

Данная задача является классической задачей «Ханойские башни». Для её решения можно использовать рекурсивный алгоритм. Вот как это можно сделать на языке 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.

Leave a Comment