• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Пролог. Задача Решена Плз Помогите Построить Дерево Вывода!

  • Автор темы KalinaK
  • Дата начала
K

KalinaK

решила задание на прологе 5.2 помогите плз построить дерево вывода.

задание состояло в том, чтобы к нижеприведенной задаче добавить предикат segment( N,L ),
здесь N,L список чисел.
Предикат истинен если:N 0, L =[0,…,N].
Пример: segment ( 2, [0,1,2] ) - истинна (yes) .
Цель – segment ( 4 , L ).



/****************LISTS************** *****/
DOMAINS
x=integer
l_x=x*

PREDICATES
segment(x,l_x)
generate(x,x,l_x)


CLAUSES
generate(N,N,[N]).
generate(M,N,[M|T]):-
M<N,
M1=M+1,
generate(M1,N,T).


segment(N,L):-
generate(0,N,L).



goal
%segment(2,[0,1,2]).
segment(4,L).
 
R

rrrFer

Что-то конкретное не получается? - я не понимаю какие проблемы могут быть с деревом вывода - нет ничего проще чем построить его...но у меня сканера нет - рисовать тяжело мышкой.

берете этот кусок:
generate(N,N,[N]).
generate(M,N,[M|T]):-
M<N,
M1=M+1,
generate(M1,N,T).

вверху пишите ".", обводите в кружок - это корень дерева
слева от него рисуете кружок generate(N,N,[N]). и ставите в него стрелку
справа - кружок generate(M,N,[M|T])

от правого кружка ведете стрелку в кружок с запятой ","
от запятой - 3 стрелки в кружки (слева направо) : "M<N", "M1=M+1", "generate(M1,N,T)"

дерево готово.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!