Professional Documents
Culture Documents
LISTAS EN PROLOG
domains
listanum=integer*
predicates
numeros(listanum).
clauses
numeros([1,7,5,4]).
goal
numeros(A),
numeros([H|T]),
write(A), nl,
write(H),nl,
write(T).
domains
lista=integer*
predicates
agregar(integer,lista,lista)
clauses
agregar(X,L,[X|L]).
goal
write("Ingrese un Numero :"),
readint(N),
agregar(N,[4,5],R),
write(R).
1
clearwindow(),
write("Ingrese Numero :"),
readint(X),
agregaord(X,[1,4,5],R),
write(R).
domains
lista=integer*
predicates
eliminar(integer,lista,lista).
clauses
eliminar(N,[],[]):-
write(N," No pertenece a la Lista").
eliminar(N,[N|T],T):-
write(N," Ha sido eliminado").
eliminar(N,[H|T],[H|TS]):-
eliminar(N,T,TS).
goal
clearwindow(),
write("Ingrese Numero a Eliminar :"),
readint(X),
eliminar(X,[2,5,6,7],R),nl,
write(R).
domains
lista=integer*
predicates
agregaord(integer,lista,lista).
ordena(lista,lista)
clauses
agregaord(N,[],[N]).
agregaord(N,[H|T],[N|L]):-
H>=N,
L=[H|T],
!.
agregaord(N,[H|T],[H|TS]):-
agregaord(N,T,TS).
ordena([],[]).
ordena([H|T],LO):-
ordena(T,LT),
2
agregaord(H,LT,LO).
goal
clearwindow(),
Lini=[3,1,4,5],
write("Lista Inicial :",Lini),nl,
ordena(Lini,Lfin),
write("Lista Ordenada es: "),
write(Lfin),
readln(_).
transforma([EA|L],[EP,EA|L])
:- posible(EA,EP),
not(member(EP,L)).
sol_lu([E|_]) :- meta(E).
sol_lu([H|LEA]) :-
transforma([H|LEA],[G|LEP]),
write(G),nl,
sol_lu([G|LEP]).
meta(c).
member(X,[X|_]).
member(X,[_|L]):-member(X,L).
goal
clearwindow(),
write("a"),
nl,
sol_lu([a]),
readln(_).