Рубрики
Без рубрики

Реализация Ханойской башни на Python

Ханойская башня Питона – это математическая головоломка, в которой мы используем три стержня и n дисков. Он может быть реализован с помощью рекурсивной функции.

Автор оригинала: Team Python Pool.

Реализация Ханойской башни на Python

Привет, кодеры!! В этой статье мы рассмотрим и изучим кодирование игры Tower of Hanoi на python. Сначала мы познакомимся с правилами игры, а затем посмотрим пошаговую реализацию игры на python. Не теряя времени, давайте покопаемся в нем.

Что такое Ханойская башня в питоне?

Это математическая головоломка, в которой мы используем три одинаковых стержня и n дисков, все разных размеров. Диски расположены в первом стержне таким образом, что самый большой диск находится внизу, а самый маленький – вверху. Чтобы решить головоломку, нужно расположить диск в том же порядке в последнем стержне через средний стержень.

Ханойская башня на Питоне

Игра Ханойская башня

Правила Ханойской башни на Python:

  • Мы можем перемещать только один диск в любой момент времени
  • Только диск, который находится наверху, может быть перемещен и помещен сверху на любой другой стержень
  • Диск может быть помещен только поверх большего диска

Иллюстрация к игре:

Предположим, что изначально существует 3 диска, расположенных следующим образом:

иллюстрация к игре

Ход: 0

Сначала мы переместим диск из A в C

Python иллюстрация игры

Ход: 1

Теперь мы переместим диск из A в B

Ход: 2

Далее мы переместим диск стержня C в B

Ханойская башня иллюстрация игры

Ход: 3

После этого мы переместим диск из A в C

Ход: 4

Теперь переместите диск из B в

иллюстрация

Ход: 5

Далее нам нужно переместить диск стержня B в C

Иллюстрация башни

Ход: 6

И на последнем шаге мы переместим диск формы A в C, решив таким образом головоломку

Дисковая иллюстрация ханойская башня питон

Ход: 7

Реализация Ханойской башни на Python:

def tower_of_hanoi(numbers, start, auxiliary, end):  
    if(numbers):  
        print('Move disk 1 from rod {} to rod {}'.format(start, end))  
        return
    tower_of_hanoi(numbers - 1, start, end, auxiliary)  
    print('Move disk {} from rod {} to rod {}'.format(numbers, start, end))  
    tower_of_hanoi(numbers - 1, auxiliary, start, end)  
  
tower_of_hanoi(numbers, 'A', 'B', 'C')

Выход:

Выход

Объяснение:

  • Здесь мы использовали рекурсивный метод для реализации игры
  • Функция Tower Of Hanoi() принимает четыре параметраКоличество дисков Исходный стержень Вспомогательный стержень Конечный стержень
  • Количество дисков
  • Источник стержень
  • Вспомогательный стержень
  • Стержень назначения
  • Он сначала проверяет условие, если номер диска равен 1, он непосредственно перемещает его к целевому стержню и завершает функцию
  • Затем мы рекурсивно вызвали функцию для перемещения оставшихся n-1 дисков из исходного узла во вспомогательный узел, используя стержень назначения в качестве вспомогательного
  • После этого оставшийся диск 1 непосредственно перемещается от исходного стержня к вспомогательному стержню
  • Наконец, мы снова рекурсивно вызвали функцию the для перемещения оставшихся n-1 стержней от вспомогательного стержня к целевому стержню, используя исходный узел в качестве вспомогательного

Можно ли решить Ханойскую башню без рекурсии?

Этот вопрос может прийти в голову любому. Ну, это определенно возможно. Проблема Ханойской башни также может быть решена не рекурсивно с помощью href=”https://en.wikipedia.org/wiki/Tower_of_Hanoi#Binary_solution”>бинарное решение href=”https://en.wikipedia.org/wiki/Tower_of_Hanoi#Binary_solution”>бинарное решение подход, где n количество дисков кодируется и представляется в двоичной форме чисел 0 – 2^n.

Временная сложность рекурсивного решения:

Временная сложность рекурсивного решения Ханойской башни равна O(2^n), где n-число дисков.

Должен Читать

  • Лучшие Варианты Карьеры С Python
  • Разработка игр Rock Paper Scissors на Python
  • Понимание Сортировки прядей в Python На примере

Вывод:

В этой статье мы подробно познакомились с игрой Tower of Hanoi и изучили ее рекурсивную реализацию на Python. Мы также подробно разработали концепцию игры и, наконец, увидели простой код python для ее реализации.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

Счастливого Пифонирования!