prolog suma de elementos
suma_elem([X],X):-!.
suma_elem([X|Y],S):-suma_elem(Y,T), S is T + X.
/*------------------------------------------------------------------*/
/*Elimina elelemento x de la lista en todos los niveles*/
elimina_x([],X,[]):-!.
elimina_x([X],X,[]):-!.
elimina_x([X|M],X,S):-elimina_x(M,X,S),!.
elimina_x([R|M],X,S):-lista(R), elimina_x(R,X,T),elimina_x(M,X,P), concatenar([T],P,S).
elimina_x([R|M],X,S):-elimina_x(M,X,T), concatenar([R],T,S).
/*------------------------------------------------------------------*/
/*Invierte una lista en todos susniveles*/
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),!./*------------------------------------------------------------------*/
/*Saca los n primeros elementos de una lista y devuelve el resto*/
sac_n_pri([],N,[]):-!.
sac_n_pri([X|M],1,M):-!.sac_n_pri([X|M],N,S):-N1 is N-1,sac_n_pri(M,N1,S).
/*------------------------------------------------------------------*/
/*Da como resultado los n primeros elementos de una lista*/
da_n_pri(L,0,[]):-!.da_n_pri([],N,[]):-!.
da_n_pri([X|M],1,[X]):-!.
da_n_pri([X|M],N,S):-N1 is N - 1,da_n_pri(M,N1,T),concatenar([X],T,S).
/*------------------------------------------------------------------*//*Muestra los ultimos n elementos de la lista*/
da_n_ultim(L,N,S):-invertir_tot(L,T),da_n_pri(T,N,R),invertir_tot(R,S).
/*------------------------------------------------------------------*//*Determina si dos listas son iguales en todos los niveles*/
lista_igual([],[]):-!.
lista_igual([X|M],[X|R]):-lista_igual(M,R).
lista_igual([X|M],[T|R]):-lista(X), lista(T),lista_igual(X,T),lista_igual(M,R).
/*------------------------------------------------------------------*/
/*Determina si la primer lista es prefijo de la segunda*/
prefijo([],M):-!.
prefijo([X],[X|M]):-!....
Regístrate para leer el documento completo.