• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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)"

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

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