Ejercicios LISTAS

ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO ESCUELA INGENIERÍA EN SISTEMAS BASES DE CONOCIMIENTO INTEGRANTES Evelyn Sanch

Views 162 Downloads 26 File size 118KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO ESCUELA INGENIERÍA EN SISTEMAS BASES DE CONOCIMIENTO INTEGRANTES Evelyn Sanchez Jonatan Cerda Jorge Zaruma

Resuelva los siguientes problemas utilizando Listas: 1. Comprobar Lista Vacía Solución 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 Solución 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 Solución

ESCUELA SUPERIOR POLITÉCNICA 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. Solución 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 Solución 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 máximo de una lista Solución 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 POLITÉCNICA DE CHIMBORAZO

?- maximo([2,3,4,5],M). M = 5.

7. Encontrar la Longitud de una lista Solución 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. Añadir un elemento por delante de un lista Solución insertaInicio(X,L,Z):-Z = [X|L].

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

9. Añadir un elemento por detrás de una lista Solución 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 número de veces que un elemento se encuentra repetido en una lista. Solución 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 POLITÉCNICA DE CHIMBORAZO ?- ocurre(a,[a,b,a,a,c,a],L). L=4.

11.

Borrar un elemento de una lista.

Solución 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 obtendría como resultado de eliminar los elementos repetidos de la lista [a,b,h,b,a,j]. Solución 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, también ordenada y sin repetidos (12_mezcla.pl). Por ejemplo, el resultado de mezclar las listas [1,3,5] y [2,3,9] sería 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 POLITÉCNICA 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 serían las listas [2,4,1] y [7,8,9]. Solución 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