• Пролог. Создать предикат, находящий минимальное из значений, находящихся в листьях дерева
    Дмитрий Фирсов Ученик (176), Вопрос открыт 6 минут назад
    Есть код для такого задания: Создать предикат, находящий минимальное из значений, находящихся в вершинах дерева.
    DOMAINS
    tree = e; tr(integer,tree,tree)
    PREDICATES
    tree_min(tree,integer)
    min(integer,integer,integer)
    CLAUSES
    min(X,Y,Z):-
    X min(_,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.
    Что нужно поменять, чтобы сделать получить код для задания, которое указано в заголовке моего вопроса?

Ответы 2

  • По этому коду тоже для вершин, а не конкретно для листьев
    • Автор:

      ernie0xqv
    • 6 лет назад
    • 0
  • Ну типо так: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).
    • Автор:

      xander855
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years