Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE CHIMBORAZO
INTEGRANTES
Evelyn Sanchez
Jonatan Cerda
Jorge Zaruma
Solucin
lista([],'Lista vacia'):-!.
lista([_|Y],'Lista no vacia'):-lista(Y,_).
Consulta
?- lista([],L).
L = 'Lista vacia'.
?- lista([a,f,g],L).
L = 'Lista no vacia'.
Solucin
listas_iguales(X,Y):-X=Y,write('Listas Iguales').
listas_iguales(X,Y):-X\==Y,write('Listas desiguales').
Consulta
?- listas_iguales([a,b,c],[a,b,c]).
Listas Iguales
true .
?- listas_iguales([a,b,c],[x,y,z]).
Listas desiguales
true.
Solucin
ESCUELA SUPERIOR POLITCNICA
DE CHIMBORAZO
concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).
Consulta
?- concatenar([a,b,c],[d,e,f],LN).
LN = [a, b, c, d, e, f].
Solucin
xpertenece(X,[X|_]):-!.
xpertenece(X,[_|M]):-xpertenece(X,M).
Consulta
?- xpertenece(a,[b,c,d]).
false.
?- xpertenece(b,[b,c,d]).
true.
Solucin
invertir([],[]).
invertir([H|T],L):-invertir(T,S),append(S,[H],L).
ultimo(X,L):-invertir(L,[X|_]).
Consulta
?- ultimo(a,[a,b,c]).
false.
?- ultimo(c,[a,b,c]).
true.
Solucin
maximo([X],X):-!.
maximo([X,Y|M],X):-maximo([Y|M],Z),X>=Z.
maximo([X|M],Z):-maximo(M,Z),Z>X.
Consulta
ESCUELA SUPERIOR POLITCNICA
DE CHIMBORAZO
?- maximo([2,3,4,5],M).
M = 5.
Solucin
longitud_lista([],0).
longitud_lista([_|Xs],N1):- longitud_lista(Xs,N), N1 is N+1.
Consulta
?- longitud_lista([a,b,c,d],L).
L = 4.
Solucin
insertaInicio(X,L,Z):-Z = [X|L].
Consulta
?- insertaInicio(a,[b,c,d],NL).
NL = [a, b, c, d].
Solucin
Consulta
?- insertaFinal(d,[a,b,c],NL).
NL = [a, b, c, d]
10. Contar el nmero de veces que un elemento se encuentra repetido en una lista.
Solucin
ocurre(_,[],0).
ocurre(E,[X|L],S):-E==X,ocurre(X,L,T),S is T+1.
ocurre(E,[X|L],S):-E\==X,ocurre(E,L,T),S is T.
Consulta
ESCUELA SUPERIOR POLITCNICA
DE CHIMBORAZO
?- ocurre(a,[a,b,a,a,c,a],L).
L=4.
Solucin
Consulta
?- eliminar_x(a,[a,b,c,a,d,a,e,f,a],LN).
LN = [b, c, d, e, f]
12. Escriba un programa en Prolog que quite las repeticiones de elementos de una
lista, guardando el resultado en una segunda lista (11_sin_repeticiones.pl).
Por ejemplo, [a,b,h,j] se obtendra como resultado de eliminar los elementos
repetidos de la lista [a,b,h,b,a,j].
Solucin
esMiembro(X,[X|_]).
esMiembro(X,[_|T]):-esMiembro(X,T).
eliminaRepetidos([],[]).
eliminaRepetidos([H|T],S):-esMiembro(H,T),eliminaRepetidos(T,S).
eliminaRepetidos([H|T],[H|S]):-eliminaRepetidos(T,S).
Consulta
?- eliminaRepetidos([a,b,h,b,a,j],L).
L = [h, b, a, j] .
?- eliminaRepetidos([a,b,a,b,g,f,d,s,a,a,b,b],L).
L = [g, f, d, s, a, b]
14. Defina un predicado llamado partir para dividir una lista respecto un umbral,
dejando los valores menores a la izquierda y los mayores a la derecha
(13_partir.pl). Por ejemplo, el resultado de partir la lista [2,7,4,8,9,1] respecto
al umbral 6 seran las listas [2,4,1] y [7,8,9].
Solucin
menores_x(_,[],[]):-!.
menores_x(X,[Y|W],[Y|Z]):-X>Y,menores_x(X,W,Z),!.
menores_x(X,[_|W],Z):-menores_x(X,W,Z),!.
mayores_x(_,[],[]):-!.
mayores_x(X,[Y|W],[Y|Z]):-X<Y,mayores_x(X,W,Z),!.
mayores_x(X,[_|W],Z):-mayores_x(X,W,Z),!.
obtenerlista(X,L,S):-
menores_x(X,L,Men),mayores_x(X,L,May),S=(Men,'Y',May).
Consulta
?- obtenerlista(6,[2,7,4,8,9,1],LP).
LP = ([2, 4, 1], 'Y', [7, 8, 9]).