|
2 / 2 / 0
Регистрация: 18.12.2020
Сообщений: 42
|
|||||||||||
Улучшение решения задачи о ханойских башнях (Prolog)14.05.2023, 00:58. Показов 939. Ответов 3
Добрый день, решаю задачу о ханойских башнях на прологе, написал ниже приведённой код, который правильно решает задачу.
Но столкнулся с желанием отобразить последовательность действий при решении более наглядно - в виде 3х списков, где каждый список - отдельный стержень. Пример для трёх колец - [1,2,3][][], [2,3][1][], [3][1][2], [3][][1,2], [][3][1,2], [1][3][2], [1][2,3][], [][1,2,3][].
Я не слишком хорошо дружу с Prolog'ом, у самого сделать не получается, возможно поможете, подскажите какие встроенные функции лучше использовать и как реализовать. Отдельно хотел бы попросить о помощи Catstail, видел много ваших ответов в темах по Haskell и Prolog, очень помогли. Добавлено через 1 час 41 минуту Похоже, моё начальное предположение оказалось неверным, по поводу изменения списков в функции move(1,X,Y,_), ведь она не вызывает саму себя, следовательно, изменения произведённые в ней просто не сохранятся в общей рекурсивной функции. Получается, изменение списков нужно делать в move(N,X,Y,Z), а вывод в move(1,X,Y,_). Остался вопрос, как контролировать изменения и сопоставить списки со стрежнями(какое-то подобие свитч кейса?!). Вот что у меня есть на данном этапе:
0
|
|||||||||||
| 14.05.2023, 00:58 | |
|
Ответы с готовыми решениями:
3
Визуализация задачи о ханойских башнях Решение задачи о Ханойских башнях
|
|
2 / 2 / 0
Регистрация: 18.12.2020
Сообщений: 42
|
||||||
| 14.05.2023, 14:46 [ТС] | ||||||
|
Разобрался, как сопоставить списки с X,Y,Z - просто при передаче аргументов в рекурсии меняю последовательность списков. Чтобы не запутаться "кто есть кто" добавил в конец каждого списка идентификатор (first, second, third).
Добавлено через 3 часа 8 минут Моё видение задачи изменилось, похоже это невозможно сделать без глобальных переменных со списками и изменением их в move(1,X,Y,_), что противоречит главному постулату функционального программирования - функции не взаимодействуют с глобальным состоянием. Я в тупике, не знаю как реализовать списковое решение. Если у кого-то получится найти адекватное решение списками на просторах интернета, дайте знать, у меня не получилось. Возможно, кто-то на энтузиазме поможет с решением, подкинет идей реализации.
0
|
||||||
|
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
|
|
| 15.05.2023, 07:45 | |
|
Вывод результатов перестановок в список
Добавлено через 3 минуты Если Вы хотите, чтобы диски были еще именованы, то это другой вопрос...
2
|
|
|
Супер-модератор
|
|||||||||||
| 18.05.2023, 12:18 | |||||||||||
Сообщение было отмечено desengeener как решение
Решение
desengeener, вот решение с демонстрацией промежуточных состояний:
1
|
|||||||||||
| 18.05.2023, 12:18 | |
|
Помогаю со студенческими работами здесь
4
Нерекурсивное решение задачи о Ханойских башнях (Pascal -> C++)
задача о Ханойских башнях Задача о Ханойских башнях Задача о Ханойских башнях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|