Está en la página 1de 5

ESCUELA SUPERIOR POLITCNICA

DE CHIMBORAZO

ESCUELA INGENIERA EN SISTEMAS


BASES DE CONOCIMIENTO

INTEGRANTES
Evelyn Sanchez
Jonatan Cerda
Jorge Zaruma

Resuelva los siguientes problemas utilizando Listas:


1. Comprobar Lista Vaca

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

2. Comprobar si dos Listas son Iguales

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.

3. Concatenar Una Lista

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

4. Verificar si X es miembro de una lista.

Solucin

xpertenece(X,[X|_]):-!.
xpertenece(X,[_|M]):-xpertenece(X,M).

Consulta

?- xpertenece(a,[b,c,d]).
false.

?- xpertenece(b,[b,c,d]).
true.

5. Verificar el ltimo elemento de una lista

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.

6. Encontrar el mximo de una lista

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.

7. Encontrar la Longitud de una lista

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.

8. Aadir un elemento por delante de un lista

Solucin

insertaInicio(X,L,Z):-Z = [X|L].

Consulta

?- insertaInicio(a,[b,c,d],NL).
NL = [a, b, c, d].

9. Aadir un elemento por detrs de una lista

Solucin

insertaFinal(X,L,Z) :- L=[], Z = [X].


insertaFinal(X,[L|Lr],Z) :- insertaFinal(X,Lr,Z1), Z = [L|Z1].

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.

11. Borrar un elemento de una lista.

Solucin

eliminar_x(_, [], []).

eliminar_x(Y, [Y|Xs], Zs):-


eliminar_x(Y, Xs, Zs), !.

eliminar_x(X, [Y|Xs], [Y|Zs]):-


eliminar_x(X, Xs, Zs).

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]

13. Defina un predicado llamado mezclaOrdenada para mezclar dos listas


ordenadas de enteros sin repetidos en una tercera, tambin ordenada y sin
repetidos (12_mezcla.pl).
Por ejemplo, el resultado de mezclar las listas [1,3,5] y [2,3,9] sera la lista
[1,2,3,5,9]. Se pueden definir varias reglas, pero todas deben tener la misma
cabecera. No se pueden usar reglas auxiliares con otra cabecera.
ESCUELA SUPERIOR POLITCNICA
DE CHIMBORAZO

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

También podría gustarte