Создать предикат, находящий минимальное из значений, находящихся в листьях дерева - Prolog

Узнай цену своей работы

Формулировка задачи:

Есть код для такого задания: Создать предикат, находящий минимальное из значений, находящихся в вершинах дерева.
Что нужно поменять, чтобы получить код для задания, которое указано в заголовке моего вопроса?
В строке tree_min(e,0) вместо 0 будет 1000

Решение задачи: «Создать предикат, находящий минимальное из значений, находящихся в листьях дерева»

textual
Листинг программы
DOMAINS
 
tree = empty; tr(integer,tree,tree)
int=integer
intl=int*
 
PREDICATES
 
app(intl,intl,intl)
list_leaves(tree,intl)
min(intl,int)
task(tree,int)
 
CLAUSES
 
app([],R,R).
app([H|T],R,[H|Q]) :- app(T,R,Q).
 
list_leaves(empty,[]).
list_leaves(tr(N,empty,empty),[N]).
list_leaves(tr(_,L,R),Z) :- list_leaves(L,LL), list_leaves(R,RR), app(LL,RR,Z), !.
 
min([H],H).
min([H|T],H) :- min(T,R), H < R.
min([H|T],R) :- min(T,R), H >= R.
 
task(T,M) :- list_leaves(T,LT), min(LT,M). 
 
GOAL
 
task(tr(-70,tr(3,tr(1,empty,empty),tr(2,empty,empty)),tr(-9,empty,empty)),R),write(R),nl.

Объяснение кода листинга программы

В данном коде решается задача поиска минимального значения среди значений, хранящихся в листьях дерева.

  1. В начале кода определяются типы данных и множество утверждений (предикатов) для работы с ними.
  2. Далее определены функции для работы с деревьями: пустое дерево (empty), функция tr, которая создает дерево, и функция app, которая добавляет элемент в дерево.
  3. Затем определены функции для работы со списками: пустой список ([]), функция list_leaves, которая получает список листьев дерева, и функция min, которая находит минимальное значение в списке.
  4. В конце кода определена цель (задача), которая решается с помощью функции task. Она получает дерево и возвращает минимальное значение среди значений в листьях дерева.
  5. В главном блоке кода создается дерево и вызывается функция task для решения задачи. Результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы