Пролог. создать предикат, находящий минимальное из значений, находящихся в листьях дерева дмитрий фирсов ученик (176), вопрос открыт 6 минут назад есть код для такого : создать предикат, находящий минимальное из значений, находящихся в вершинах дерева. domains tree = e; tr(integer,tree,tree) predicates tree_min(tree,integer) min(integer,integer,integer) clauses min(x,y,z): - x ,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. что нужно поменять, чтобы сделать получить код для , которое указано в заголовке моего вопроса?

Николь560 Николь560    3   08.09.2019 02:10    1

Ответы
Персик1лайм Персик1лайм  06.10.2020 23:59
Ну типо так:
domains treetype = 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).
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика