Ваще не работает ^_^ - Prolog
Формулировка задачи:
Объясните почему не работает,
задание было таким " Дан список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для каждого такого дерева выполнить преобразование дерева в список (в порядке обхода левый-голова-правый) и вывести результат в виде списка списков. Затем через пробел вывести минимальное значение среди всех элементов""
код такой
Решение задачи: «Ваще не работает ^_^»
textual
Листинг программы
DOMAINS int=integer tree=tr(int,tree,tree);empty intl=int* intll=intl* tl=tree* predicates app(intl,intl,intl) tree2list(tree,intl) ltree(tl,intll) minl(intl,int) minll(intll,int) clauses app([],X,X). app([H|T],X,[H|Y]) :- app(T,X,Y). tree2list(empty,[]). tree2list(tr(X,L,R),Z) :- tree2list(L,LL), tree2list(R,RR), app(LL,[X],T), app(T,RR,Z). ltree([],[]). ltree([T|TT],[Z|ZZ]) :- tree2list(T,Z), ltree(TT,ZZ). minl([X],X). minl([H|T],M) :- minl(T,M),M<H. minl([H|T],H) :- minl(T,M),M>=H. minll([X],Z) :- minl(X,Z). minll([H|R],MH) :- minll(R,M),minl(H,MH),MH<M. minll([H|R],M) :- minll(R,M),minl(H,MH),MH>=M. goal ltree([tr(5,empty,empty),tr(6,tr(1,empty,empty),tr(-8,empty,empty)) , tr(7,tr(8,empty,empty),empty)],U), write(U),nl,minll(U,M),write(M),nl.
Объяснение кода листинга программы
- Доменные имена:
- int=integer
- tree=tr(int,tree,tree);empty
- intl=int*
- intll=intl*
- tl=tree*
- Предикаты:
- app(intl,intl,intl)
- tree2list(tree,intl)
- ltree(tl,intll)
- minl(intl,int)
- minll(intll,int)
- Клаузы:
- app([],X,X).
- app([H|T],X,[H|Y]) :- app(T,X,Y).
- tree2list(empty,[]).
- tree2list(tr(X,L,R),Z) :- tree2list(L,LL), tree2list(R,RR), app(LL,[X],T), app(T,RR,Z).
- ltree([],[]).
- ltree([T|TT],[Z|ZZ]) :- tree2list(T,Z), ltree(TT,ZZ).
- Цель:
- ltree([tr(5,empty,empty),tr(6,tr(1,empty,empty),tr(-8,empty,empty)) , tr(7,tr(8,empty,empty),empty)],U),
- write(U),nl,minll(U,M),write(M),nl. В этом коде используется язык программирования Prolog. Код определяет доменные имена, предикаты и клаузы. Затем определяется цель, которая должна быть достигнута. В данном случае, цель заключается в том, чтобы вывести дерево в виде списка и минимальное значение из списка. Пожалуйста, обратите внимание, что этот код является предположительным и может потребовать дополнительной настройки или изменений, чтобы работать должным образом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д