1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 3

Ханойская башня

24.01.2019, 22:48. Показов 33226. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые, киберфорумчане! Не знаю уже к кому идти, никак не решатся задачи. Весь гугл прочесан вдоль и поперек. Классическую интерпретацию решил сам, без всяких подсказок. А вот эти две что-то никак не идут, быть может это от того, что я уже 10 часов решаю задачи)))

Прошу расскажите логику, я больше не могу так жить)) Ну или приведите решение на любом языке, я пойму)

Условие:
Первоначально все диски лежат на стержне номер 1. Переместите диски с нечетными номерами на стержень номер 2, а с четными номерами - на стержень номер 3.

Вам не нужно находить минимальное решение, но количество совершенных перемещений не должно быть больше 200000, при условии, что количество дисков не превосходит 10.

Входные данные
Вводится натуральное число - количество дисков.

Выходные данные
Выведите ответ на задачу.
Примеры
входные данные
2
выходные данные
1 1 2
2 1 3
входные данные
3
выходные данные
1 1 2
2 1 3
1 2 3
3 1 2
1 3 2
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2019, 22:48
Ответы с готовыми решениями:

Башня
Вот сейчас думаю, не могу решить следующую задачу: Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них...

Башня
Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них настоящую крепость — последовательность из N столбиков,...

Задача "Башня"
Башня Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них настоящую крепость — последовательность из N...

7
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
25.01.2019, 11:40
Странно. Почитал первую задачу, вроде бы, она должна так же легко поддаваться рекурсии, как и классическая.
0
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 3
25.01.2019, 17:17  [ТС]
Это-то да, но вот куда перекладывать блины, которые были до четного или нечетного

Добавлено через 9 минут
С 12 года человек не может решить) Сортирующие башни
0
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 3
27.01.2019, 13:25  [ТС]
В общем сам пришел к такому алгоритму:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def f(n, x, y):
    if n > 0:
        f(n - 1, x, 6 - x - y)
        print(n, x, y)
        f(n - 1, 6 - x - y, y)
 
 
def sortF(n, x, y):
    if n > 0:
        f(n - 1, x, 6 - x - y)
        print(n, x, y)
        if n > 3:
            f(n - 3, 6 - x - y, x)
        if n > 2:
            print(n - 2, 6 - x - y, y)
        if n > 3:
            sortF(n - 3, x, 6 - x - y)
 
 
n = int(input())
if n % 2 == 0:
    sortF(n, 1, 3)
else:
    sortF(n, 1, 2)
Добавлено через 12 минут
И вторая:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def f(n,x,y):
    if n > 0:
        if n == 1:
            print(n, x, y)
        else:
            f(n - 1, x, y)
            f(n - 2, y, 6 - x - y)
            print(0, x, y)
            f(n - 2, 6 - x - y, x)
            f(n - 1, x, y)
 
n = int(input())
f(n,1,3)
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
28.01.2019, 12:08
0
3 / 1 / 2
Регистрация: 22.12.2019
Сообщений: 35
28.03.2021, 20:35
Цитата Сообщение от azazanchik Посмотреть сообщение
def f(n,x,y):
    if n > 0:
        if n == 1:
            print(n, x, y)
        else:
            f(n - 1, x, y)
            f(n - 2, y, 6 - x - y)
            print(0, x, y)
            f(n - 2, 6 - x - y, x)
            f(n - 1, x, y)
n = int(input())
f(n,1,3)
Немного неправильно выдаёт, какой то 0 диск, хотя на его месте должен быть 2.
Можете помочь исправить

Добавлено через 1 час 23 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def f(n,x,y):
    if n > 0:
        if n == 1:
            print(n, x, y)
        else:
            f(n - 1, x, y)
            f(n-2 , y, 6 - x - y)
            print(2, x, y)
            f(n-2 , 6 - x - y, x)
            f(n - 1, x, y)
 
n = int(input())
f(n,1,3)
вот исправленный вариант 2 решения
0
0 / 0 / 0
Регистрация: 02.04.2023
Сообщений: 3
02.04.2023, 15:24
Решение первой
Python
1
2
3
4
5
6
7
8
9
def func(a, b, c):
    if a > 0:
        tmp = 6 - b - c
        func(a-1, b, tmp)
        print(a, b, c)
        func(a-1, tmp, c)
 
n = int(input())
func(n, 1, 3)
0
71 / 55 / 32
Регистрация: 13.04.2018
Сообщений: 521
02.04.2023, 15:53
1-я задача
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def hanoi(n, from_rod, to_rod, aux_rod):
    if n == 1:
        print(1, from_rod, to_rod)
        return
 
    hanoi(n - 1, from_rod, aux_rod, to_rod)
 
    print(n, from_rod, to_rod)
 
    hanoi(n - 1, aux_rod, to_rod, from_rod)
 
 
n = int(input())
for i in range(1, n+1):
    if i % 2 == 1:
        hanoi(i, 1, 2, 3)
    else:
        hanoi(i, 1, 3, 2)
2-я задача
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def move_disk(start, end):
    global moves
    moves.append((1, start, end))
 
def exchange_disks(start, end, temp):
    global moves
    if len(start) > 0 and len(end) > 0 and start[-1] == end[-1] - 1:
        moves.append((0, start, end))
        end.append(start.pop())
    else:
        exchange_disks(start, temp, end)
        move_disk(start, end)
        exchange_disks(temp, end, start)
 
n = int(input())
 
moves = []
start = list(range(n, 0, -1))
end = []
temp = []
 
exchange_disks(start, end, temp)
 
print(len(moves))
for move in moves:
    print(move[0], move[1], move[2])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2023, 15:53
Помогаю со студенческими работами здесь

Решение задачи "Ханойская башня" на 64 диска через if и for
Доброго времени суток! Не подскажете, как можно написать код, который смог бы выполнить задачу про ханойские башни без использования...

Останкинская башня
Останкинская телебашня вещает в эфир радиоволны дециметрового диапазона. Дальность приёма в условиях прямой видимости вычисляется по...

Башня Бурана
Здравствуйте. Помогите,пж,решить задачу: Бурана ограничение по времени на тест 0.5 секунд ограничение по памяти на тест 256...

Перевернутая башня
Вавилонцы решили построить удивительную башню - расширяющуюся кверху и содержащую бесконечное число этажей и комнат. Она устроена следующим...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru