Предикат p(I,L1,L2) на Пролог, който по дадено естествено число I и списък от числа L1, връща в L2, списък получен от L1, след премахване на всички нечетни числа след последните I елемента на L1.
Или ако I = 3, L1 = [1,2,3,4,5], L2 трябва да върне [1,2,4].
p(I,L1,L2):-reverse(L1,L3),delete(I,L3,L4),reverse(L4,L2). reverse([],[]). reverse([X|L1],L2):-reverse(L1,L3),append(L3,[X],L2). append([],L,L). append([X|L1],L2,[X|L3]):-append(L1,L2,L3). delete(0,L,L). delete(I,[X|L],[X|L2]):- I>0, X mod 2 =:= 0,I1 is I-1, delete(I1,L,L2). delete(I,[X|L],L2):- I>0, X mod 2 =:= 1, I1 is I-1, delete(I1,L,L2). ?- p(3,[1,2,3,4,5,6,7,8,9,10],X),write(X),nl. % X = [1,2,3,4,5,6,7,8,10]