) который имеет ответ "начало работы", который может вам помочь.

first(M,N):-
     N>0,M=..[H|T],((T==[],write(H));(T\=[],write(H),Q is N-1,second(T,Q))).
second(M,N):-
     N>0,M=[H|T],first(H,N),((T==[]);(T\=[],second(T,N))).
second(_,0):-!.

у вырезать дерево из глубины. Я пишу программу, которая дает мне этот результат.

?- first(s(f(b(m,k),a),t(a,g)),4).
sfbmkatag
True

Но я хочу получить это.

?- first(s(f(b(m,k),a),t(a,g)),2,X). 
X = s(f,t) 
True

?- first(s(f(b(m,k),a),t(a,g)),3,X). 
X = s(f(b,a),t(a,g)) 
True

Пожалуйста, кто-нибудь, помогите мне решить это.

Ответы на вопрос(0)

Ваш ответ на вопрос