Автор оригинала: Team Python Pool.
Реализация Ханойской башни на Python
Привет, кодеры!! В этой статье мы рассмотрим и изучим кодирование игры Tower of Hanoi на python. Сначала мы познакомимся с правилами игры, а затем посмотрим пошаговую реализацию игры на python. Не теряя времени, давайте покопаемся в нем.
Что такое Ханойская башня в питоне?
Это математическая головоломка, в которой мы используем три одинаковых стержня и n дисков, все разных размеров. Диски расположены в первом стержне таким образом, что самый большой диск находится внизу, а самый маленький – вверху. Чтобы решить головоломку, нужно расположить диск в том же порядке в последнем стержне через средний стержень.
Игра Ханойская башня
Правила Ханойской башни на Python:
- Мы можем перемещать только один диск в любой момент времени
- Только диск, который находится наверху, может быть перемещен и помещен сверху на любой другой стержень
- Диск может быть помещен только поверх большего диска
Иллюстрация к игре:
Предположим, что изначально существует 3 диска, расположенных следующим образом:
Ход: 0
Сначала мы переместим диск из A в C
Ход: 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 для ее реализации.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!