• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы 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).
 
Что-то конкретное не получается? - я не понимаю какие проблемы могут быть с деревом вывода - нет ничего проще чем построить его...но у меня сканера нет - рисовать тяжело мышкой.

берете этот кусок:
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)"

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab