Определить на каком уровне в дереве находится его максимальный элемент - Prolog
Формулировка задачи:
Ребята, помогите, пожалуйста с программой.. я с прологом в "плохих отношениях".... очень нужна ваша помощь.... Нужно определить на каком уровне в дереве находится его максимальный элемент
Решение задачи: «Определить на каком уровне в дереве находится его максимальный элемент»
textual
Листинг программы
domains int=integer intl=int* treetype = tree(treetype, integer, treetype); nil predicates max(int,int,int) max_in_tree(treetype,int) search_lv(treetype,int,int,intl) append(intl,intl,intl) task(treetype,intl) clauses append([],Y,Y). append([H|T],Y,[H|R]) :- append(T,Y,R). max(M,N,M) :- M>=N. max(M,N,N) :- N>M. max_in_tree(tree(nil,M,nil),M) :- !. max_in_tree(tree(nil,M,R),N) :- max_in_tree(R,RR),max(RR,M,N). max_in_tree(tree(L,M,nil),N) :- max_in_tree(L,LL),max(LL,M,N). max_in_tree(tree(L,V,R),N) :- max_in_tree(L,LL), max_in_tree(R,RR), max(LL,RR,LR),max(V,LR,N). search_lv(nil,_,_,[]) :- !. search_lv(tree(LL,V,RR),V,L,[L|T]) :- L1=L+1, search_lv(LL,V,L1,T1), search_lv(RR,V,L1,T2), append(T1,T2,T). search_lv(tree(LL,Z,RR),V,L,T) :- Z <> V, L1=L+1, search_lv(LL,V,L1,T1), search_lv(RR,V,L1,T2), append(T1,T2,T). task(T,R) :- max_in_tree(T,M), write(M), nl, search_lv(T,M,0,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д