
Питирим
5 год назад
Пролог. Создать предикат, находящий минимальное из значений, находящихся в листьях дереваДмитрий Фирсов Ученик (176), Вопрос открыт 6 минут назадЕсть код для такого задания: Создать предикат, находящий минимальное из значений, находящихся в вершинах дерева.DOMAINStree = e; tr(integer,tree,tree)PREDICATEStree_min(tree,integer)min(integer,integer,integer)CLAUSESmin(X,Y,Z):-Xmin(_,Y,Y).tree_min(e,0).tree_min(tr(X,L,R),N):-tree_min (L,N1), tree_min (R,N2),min(X,N1,Z),min(Z,N2,Z1), N=Z1.Что нужно поменять, чтобы сделать получить код для задания, которое указано в заголовке моего вопроса?
ОТВЕТЫ

Ivanka
Oct 24, 2020
Ну типо так:
domainstreetype = tree(integer, treetype, treetype); empty
predicates
max_t(treetype, integer)
min_t(treetype, integer)
max(integer,integer,integer)
min(integer,integer,integer)
clauses
max(M,N,N) :- N>=M, !.
max(M,N,M) :- M>=N, !.
min(M,N,N) :- N<=M, !.
min(M,N,M) :- M<=N, !.
max_t(tree(X,empty,empty),X) :- !.
max_t(tree(X,empty,R),Q) :- max_t(R,N), max(X,N,Q).max_t(tree(X,L,empty),Q) :- max_t(L,N), max(X,N,Q).
max_t(tree(X,L,R),Q) :- max_t(L,LM), max_t(R,RM), max(RM,LM,QM), max(X,QM,Q).
min_t(tree(X,empty,empty),X) :- !.
min_t(tree(X,empty,R),Q) :- min_t(R,N), min(X,N,Q).min_t(tree(X,L,empty),Q) :- min_t(L,N), min(X,N,Q).
min_t(tree(X,L,R),Q) :- min_t(L,LM), min_t(R,RM), min(RM,LM,QM), min(X,QM,Q).
domainstreetype = tree(integer, treetype, treetype); empty
predicates
max_t(treetype, integer)
min_t(treetype, integer)
max(integer,integer,integer)
min(integer,integer,integer)
clauses
max(M,N,N) :- N>=M, !.
max(M,N,M) :- M>=N, !.
min(M,N,N) :- N<=M, !.
min(M,N,M) :- M<=N, !.
max_t(tree(X,empty,empty),X) :- !.
max_t(tree(X,empty,R),Q) :- max_t(R,N), max(X,N,Q).max_t(tree(X,L,empty),Q) :- max_t(L,N), max(X,N,Q).
max_t(tree(X,L,R),Q) :- max_t(L,LM), max_t(R,RM), max(RM,LM,QM), max(X,QM,Q).
min_t(tree(X,empty,empty),X) :- !.
min_t(tree(X,empty,R),Q) :- min_t(R,N), min(X,N,Q).min_t(tree(X,L,empty),Q) :- min_t(L,N), min(X,N,Q).
min_t(tree(X,L,R),Q) :- min_t(L,LM), min_t(R,RM), min(RM,LM,QM), min(X,QM,Q).
858
Смежные вопросы: