Está en la página 1de 2

% Autor: wILBERT CASTRO ECHAMA

% Fecha: 03/06/2012
% PRACTICA CALIFICADA DE LISTAS
%-----------------------------------------------------------------------------% 1.- pertenecia(L,E): E es el elemento que pertenece a la Lista L
%ubicar(L,E,P): P es la posicion del elem en la lista L
ubicar([E|L],E,1):- !.
ubicar([X|Y],E,P):- ubicar(Y,E,P1),P is 1+P1.
pertenece(L,E):-ubicar(L,E,P).
%-----------------------------------------------------------------------------% 2.- sumatoria(L,X): X es la suma de los elementos de la lista L
sumatoria([E],E):-!.
sumatoria([X|Y],S):- sumatoria(Y,S1),S is S1+X.
%-----------------------------------------------------------------------------% 3.- menor(L,E): E es el elem menor de la lista L
minimo([X],X):-!.
minimo([X,Y|M],X):-minimo([Y|M],Z),X =< Z,!.
minimo([X|M],Z):-minimo(M,Z),!,Z < X.
%-----------------------------------------------------------------------------% 5.- concatenar(L1,L2,R): R es la lista concatenada de L1 con L2
concatenar([],L,L).
concatenar([X|Y],L,[X|R]):-concatenar(Y,L,R).
%-----------------------------------------------------------------------------% 4.- ordenar_asc(L,X): X es la lista ordenada de L
% Eliminar el elem E de la lista L
eliminar([E|L],1,L):-!.
eliminar([X|Y],P,[X|LR]):-P1 is P-1,eliminar(Y,P1,LR).
eliminar2(L,E,LR):- ubicar(L,E,P),eliminar(L,P,LR).
%maximo(L,X): X es el elmento maximo de la Lista L
maximo([X],X):-!.
maximo([X,Y|M],X):-maximo([Y|M],Z),X>=Z,!.
maximo([X|M],Z):-maximo(M,Z),Z>X.
ordenar_asc([E],[E]):-!.
ordenar_asc(L,R):- maximo(L,X),eliminar2(L,X,L1),ordenar_asc(L1,L2),!,concatenar
(L2,[X],R).
%-----------------------------------------------------------------------------% 9.- Elim_repit(L,LR): LR es la sin duplicados de la lista L
%verifica sin un elemento es miembro de una Lista
esMiembro(X,[X|_]).
esMiembro(X,[_|T]):-esMiembro(X,T).
elimRepetidos([],[]).
elimRepetidos([H|T],S):-esMiembro(H,T),!,elimRepetidos(T,S).
elimRepetidos([H|T],[H|S]):-elimRepetidos(T,S).
%-----------------------------------------------------------------------------% 6.- unir(L1,L2,LR): R es la union entre las listas L1 y L2
%3.e. Hallar la concatenacin de dos listas
unionn([],L,L).
unionn(L,[],L).

unionn(L1,L2,L3):- concatenar(L1,L2,Laux), elimRepetidos(Laux,L3).


%-----------------------------------------------------------------------------% 7.- insertar_ordenado(L,E,LR): LR es la listas despues de insertar E en L orde
nada
insertar(E,L,1,[E|L]):-!.
insertar(E,[X|Y],P,[X|LR]):- P1 is P-1,insertar(E,Y,P1,LR).
insertar_ordenado(L,E,LR):- insertar(E,L,1,L1),ordenar_asc(L1,LR).
%---------------------------------------------------------------------------% 8.- eliminar Apariciones
elimina_x([],X,[]):-!.
elimina_x([X|M],X,Z):-elimina_x(M,X,Z),!.
elimina_x([R|M],X,[R|Z]):-elimina_x(M,X,Z),!.
%-----------------------------------------------------------------------------% 10.- Busqueda Binaria
%-----------------------------------------------------------------------------% 11.- Inclusion
inclusion([],Conjunto).
inclusion([Car|Cdr],Conjunto) :- esMiembro(Car,Conjunto),inclusion(Cdr,Conjunto)
.
%-----------------------------------------------------------------------------% 12.- diferencia(L1,L2.LR):Devuelve una lista con la diferencia entre dos lista
s
% Pertenece
pertenec(X,Y) :- var(X);var(Y).
pertenec(X,Y) :- nonvar(X),nonvar(Y),X<Y.
%Diferencia de conjuntos
diferencia([],S,[]).
diferencia(S,[],S) :- S\=[].
diferencia([X|TX],[X|TY],TZ) :- diferencia(TX,TY,TZ).
diferencia([X|TX],[Y|TY],[X|TZ]) :- pertenec(X,Y), diferencia(TX,[Y|TY],TZ).
diferencia([X|TX],[Y|TY],TZ) :- pertenec(Y,X),diferencia([X|TX],TY,TZ).
%-----------------------------------------------------------------------------% 13.- Diferencia Simetrica
diferenciaSimetrica(L1,L2,LR):-diferencia(L1,L2,P1),diferencia(L2,L1,P2),unionn(
P1,P2,LR).
%-----------------------------------------------------------------------------%------------------------------------------------------------------------------

También podría gustarte