Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
golduser
1

Ханойские башни 4 стержня 5 колец

06.12.2011, 00:01. Показов 5130. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый.
Нужно решить задачку.. ханойская башня.. поиск в ширину
4 стержня и 5 колец.
На турбо прологе

Prolog
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
domains
ilist=integer*
sostoyanie=s(ilist,ilist,ilist,ilist)
sostoyaniya=sostoyanie*
searchlist=sostoyaniya*
 
predicates
menshe(integer,ilist).
move(sostoyanie,sostoyanie).
search_bdth(sostoyanie,sostoyanie).
prolong(sostoyaniya,sostoyaniya).
bdth(searchlist,sostoyanie,sostoyaniya).
show_answer(sostoyaniya).
member(sostoyanie,sostoyaniya).
append(searchlist,searchlist,searchlist).
 
clauses
menshe(_,[]).
menshe(A,[B|_]):-A<B.
 
move(s([H|Tail],B,C,D),s(Tail,[H|B],C,D)):-menshe(H,B).
move(s([H|Tail],B,C,D),s(Tail,B,[H|C],D)):-menshe(H,C).
move(s([H|Tail],B,C,D),s(Tail,B,C,[H|D])):-menshe(H,D).
 
move(s(A,[H|Tail],C,D),s([H|A],Tail,C,D)):-menshe(H,A).
move(s(A,[H|Tail],C,D),s(A,Tail,[H|C],D)):-menshe(H,C).
move(s(A,[H|Tail],C,D),s(A,Tail,C,[H|D])):-menshe(H,D).
 
move(s(A,B,[H|Tail],D),s([H|A],B,Tail,D)):-menshe(H,A).
move(s(A,B,[H|Tail],D),s(A,[H|B],Tail,D)):-menshe(H,B).
move(s(A,B,[H|Tail],D),s(A,B,Tail,[H|D])):-menshe(H,D).
 
move(s(A,B,C,[H|Tail]),s([H|A],B,C,Tail)):-menshe(H,A).
move(s(A,B,C,[H|Tail]),s(A,[H|B],C,Tail)):-menshe(H,B).
move(s(A,B,C,[H|Tail]),s(A,B,[H|C],Tail)):-menshe(H,C).
 
search_bdth(Start,Finish):-bdth([[Start]],Finish,Way),show_answer(Way).
 
member(H,[H|_]).
member(H,[_|Tail]):-member(H,Tail).
 prolong([Temp|Tail],[New,Temp|Tail]):-
move(Temp,New),not(member(New,[Temp|Tail])).
 
append([],B,B).
append([H|Tail],B,[H|NewTail]):-append(Tail,B,NewTail).
 
bdth([[Finish|Tail]|_],Finish,[Finish|Tail]).
bdth([TempWay|OtherWays],Finish,Way):-
        findall(W,prolong(TempWay,W),Ways),
        append(OtherWays,Ways,NewWays),
        bdth(NewWays,Finish,Way).
 
show_answer([_]):-!.
show_answer([A,B|Tail]):-
        show_answer([B|Tail]),nl,write(B),write(" -> "),write(A).
 
goal
search_bdth(s([1,2,3,4,5],[],[],[]),s([],[],[],[1,2,3,4,5])).
Вот вообщем то мои наработки..
компилится всё хорошо но при запуске выдает ошибку 1007 Heap overflow.
что то сделал не так. подскажите что
Заранее спасибо
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2011, 00:01
Ответы с готовыми решениями:

Ханойские башни, 4 стержня
Привет. Нужна помощь в написании программ: ханойские башни Условия. Ханойские башни. Задача...

Ханойские башни со списками
Помогите кто может! нужно написать решение всем известной задачи про ханойские башни с N дисками....

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

Ханойские башни
Головоломка &quot;Ханойские башни&quot;. Для начала сформулируем саму задачу. Даны три стержня ((н) -...

1
2505 / 1480 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
06.12.2011, 03:34 2
Поиск в ширину жрет много памяти, и задача сама по себе содержит кучу вариантов перебора. Не знаю можно ли в турбо размер отводимой памяти настравать. Если все-так инет, то используйте поиск с итеративным погружением.
0
06.12.2011, 03:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2011, 03:34
Помогаю со студенческими работами здесь

Ханойские башни
Помогите кто может! нужно написать решение всем известной задачи про ханойские башни с N дисками. ...

Ханойские башни. Объяснение по коду
У меня есть код, в котором описан алгоритм решения головоломки Ханойские башни, но так как на Ruby...

Ханойские башни Common Lisp
Есть 3 стержня, на один из которых нанизаны 8 дисков, причем диски отличаются размером и лежат...

Ханойские башни
Задача. Нужно решить задачу про ханойские башни. Нам дано как обычно 3 стержня. Число колец от 1 до...

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

Ханойские башни
Ребята, помогите разобраться с алгоритмом, то что сначала перемещаются n-1 дисков на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru