César
Andrés Ruiz Saltos
Los siguientes
ejercicios que veremos a continuación son para prolog y ya han sido probados
1._ Solo determina si lo que recibe es una lista
lista([]):-!.
lista([X|Y]):-lista(Y).
lista([]):-!.
lista([X|Y]):-lista(Y).
2._ Concatena dos listas un ejemplo muy básico dentro de la
programación
concatenar([],L,L).
concatenar([X|M],L,[X|Z]):-concatenar(M,L,Z).
concatenar([],L,L).
concatenar([X|M],L,[X|Z]):-concatenar(M,L,Z).
3._Calcula la longitud de la lista algo muy útil para
futuras creación y combinaciones con otros programas
long([],0):-!.
long([X|Y],S):-long(Y,T),!, S is T + 1.
long([],0):-!.
long([X|Y],S):-long(Y,T),!, S is T + 1.
4._Suma los elementos de la lista, este es otro de los mas
usados cuando aprendemos a desarrollar nuestra lógica y muy útil
suma_elem([X],X):-!.
suma_elem([X|Y],S):-suma_elem(Y,T), S is T + X.
suma_elem([X],X):-!.
suma_elem([X|Y],S):-suma_elem(Y,T), S is T + X.
5._Invierte una lista en todos sus niveles aquí veremos que
usaremos la parte de concatenar para poder realizar la invertida
invertir_tot([],[]):-!.
invertir_tot([X|M],S):-lista(X),invertir_tot(X,P),invertir_tot(M,T),concatenar(T,[P],S).
invertir_tot([X|M],S):-invertir_tot(M,T),concatenar(T,[X],S),!.
invertir_tot([],[]):-!.
invertir_tot([X|M],S):-lista(X),invertir_tot(X,P),invertir_tot(M,T),concatenar(T,[P],S).
invertir_tot([X|M],S):-invertir_tot(M,T),concatenar(T,[X],S),!.
6._Muestra los últimos n elementos de la lista,
simplemente lo que deseamos ver
da_n_ultim(L,N,S):-invertir_tot(L,T),da_n_pri(T,N,R),invertir_tot(R,S).
da_n_ultim(L,N,S):-invertir_tot(L,T),da_n_pri(T,N,R),invertir_tot(R,S).
7._ Elimina los elementos repetidos que estén en una lista
elim_repet([],[]):-!.
elim_repet([X|M],S):-not lista(X), elimina_x(M,X,T),elim_repet(T,Y),
concatenar([X],Y,S).
elim_repet([X|M],S):-lista(X), elim_l1_de_l2(X,M,T),elim_repet(X,Y),
elim_repet(T,J),concatenar([Y],J,S).
elim_repet([],[]):-!.
elim_repet([X|M],S):-not lista(X), elimina_x(M,X,T),elim_repet(T,Y),
concatenar([X],Y,S).
elim_repet([X|M],S):-lista(X), elim_l1_de_l2(X,M,T),elim_repet(X,Y),
elim_repet(T,J),concatenar([Y],J,S).
8._ Determina si una lista se encuentra en orden creciente
o decreciente ósea de mayor a menor o de menor a mayor
creciente([X,Y|Z]):- X
creciente([Y|Z]).
creciente([X]).
decreciente([X,Y|Z]):- X>Y,
decreciente([Y|Z]).
decreciente([X]).
creciente([X,Y|Z]):- X
creciente([X]).
decreciente([X,Y|Z]):- X>Y,
decreciente([Y|Z]).
decreciente([X]).
9._Calcula la potencia de un número, N elevado a la N1
donde n será la base y n1 será el exponente
potencia(0,0,'No se puede calcular'):-!.
potencia(N,0,1):-N=\=0.
potencia(N,N1,S):-N2 is N1 -1,potencia(N,N2,R),!, S is R*N.
potencia(0,0,'No se puede calcular'):-!.
potencia(N,0,1):-N=\=0.
potencia(N,N1,S):-N2 is N1 -1,potencia(N,N2,R),!, S is R*N.
10.- Determina si un elemento X pertenece a una lista
pert(X,[X|M]):-!.
pert(X,[R|M]):-pert(X,M).
pert(X,[X|M]):-!.
pert(X,[R|M]):-pert(X,M).
No hay comentarios:
Publicar un comentario