@Sergey_8888

Как Обрезать дерево на заданной глубине в Пролог(Prolog)?

Я хочу Обрезать дерево на заданной глубине. Аргументы: произвольное бинарное дерево; необходимая глубина; результирующее дерево.

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

Пожалуйста кто нибудь скажите как этот сделать.Не обязательно на Visual можно на Турбо.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы