• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

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

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