Списки, найти максимальный элемент среди отрицательных из первых n-1 элементов - Prolog

Формулировка задачи:

Надо написать программу для нахождения максимального элемента среди отрицательных из первых n-1 элементов. Понял как находить макс элемент, а вот чтобы из первых n-1 не могу никак додуматься

Код к задаче: «Списки, найти максимальный элемент среди отрицательных из первых n-1 элементов - Prolog»

textual
domains
int=integer
intl=int*
 
predicates
get_head(intl,int,intl)
get_neg(intl,intl)
max_el(intl,int)
task(intl,int,int)
 
clauses
get_head([],_,[]).
get_head(_,0,[]):- !.
get_head([H|T],N,[H|R]) :- N1=N-1, get_head(T,N1,R).
 
get_neg([],[]).
get_neg([H|T],[H|R]) :- H < 0, get_neg(T,R).
get_neg([H|T],R) :- H >= 0, get_neg(T,R).
 
max_el([X],X).
max_el([H|T],X) :- max_el(T,X), X>H.
max_el([H|T],H) :- max_el(T,X), X<=H.
 
task(A,N,R) :- get_head(A,N,T), get_neg(T,Z), max_el(Z,R).

7   голосов, оценка 3.714 из 5


СОХРАНИТЬ ССЫЛКУ