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

KalinaK

New member
30.10.2013
2
0
#1
решила задание на прологе 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

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

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

дерево готово.