miércoles, 23 de enero de 2008

Operaciones con Listas en lenguaje Prolog (Invierte, Palindroma, Sublista, Ultimo)

Listas: ultimo, invierte, palindroma, busca, sublista

ultimo([],E,[E|[]]).
ultimo([H|T],E,[H|R]) :- ultimo(T,E,R).

invierte([],[]) :- !.
invierte([H|T],R) :- invierte(T,R1), ultimo(R1,H,R), !.
invierte(L,R) :- invierte(R,L) , !.

palindroma([]).
palindroma([_|[]]).
palindroma([H|T]) :- ultimo(P,H,T), palindroma(P).
%p2(T) :- invierte(T,T).

b2([],_).
b2([H|T],[H|T2]) :- b2(T,T2).
busca([],[]).
busca([H|T],[H|T2]) :- b2(T,T2),!.
busca(L,[_|T]) :- busca(L,T).

sublista([H|_],1,1,[H|[]]).
sublista([H|T],1,S,[H|T2]) :- S>1,S2 is S-1, sublista(T,1 ,S2,T2).
sublista([_|T],I,S,R ) :- I>1,I2 is I-1, sublista(T,I2,S ,R ).