You are on page 1of 3

LABORATORIO PROLOG

LISTAS EN PROLOG

2. Escribir la lista completa, su cabecera y la cola

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).

3. Agregar un elemento al inicio de una lista.

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).

4. Agregar un elemento al final de una lista.


domains
lista=integer*
predicates
agregaf(integer,lista,lista).
clauses
agregaf(N,[],[N]).
agregaf(N,[H|T],[H|TS]):-
agregaf(N,T,TS).
goal
clearwindow(),
write("Ingrese Numero Final :"),
readint(N),
agregaf(N,[1,2,7],R),
write(R).
5. Agregar un elemento a una lista en orden
domains
lista=integer*
predicates
agregaord(integer,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).
goal

1
clearwindow(),
write("Ingrese Numero :"),
readint(X),
agregaord(X,[1,4,5],R),
write(R).

6. Ver si un numero ingresado pertenece a la lista.


domains
lista=integer*
predicates
pertenece(integer,lista).
clauses
pertenece(N,[]):-
write("No Pertenece a la Lista").
pertenece(N,[N|_]):-
write("Si Pertenece a la Lista").
pertenece(N,[_|T]):-
pertenece(N,T).
goal
clearwindow(),
write("Ingrese Numero a Buscar:"),
readint(X),
pertenece(X,[1,2,5]).

7. Elimina un elemento de la lista.

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).

8. Ordena los elementos de una Lista

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(_).

9. BUSQUEDA EN PROFUNDIDAD PROLOG


domains
LSYMBOL = SYMBOL*
predicates
posible(SYMBOL,SYMBOL).
transforma(LSYMBOL,LSYMBOL).
member(SYMBOL,LSYMBOL).
sol_lu(LSYMBOL).
meta(SYMBOL).
clauses
posible(a,b).
posible(a,c).
posible(a,d).
posible(b,e).
posible(b,f).
posible(e,t).
posible(f,s).
posible(c,g).
posible(d,h).
posible(d,i).

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(_).

You might also like