Arboles

Solo disponible en BuenasTareas
  • Páginas : 6 (1407 palabras )
  • Descarga(s) : 7
  • Publicado : 23 de junio de 2010
Leer documento completo
Vista previa del texto
/*1-Determina si lo que recibe es una lista*/

lista([]):-!.
lista([X|Y]):-lista(Y).
/*------------------------------------------------------------------*/

/*2-Concatena dos listas*/

concatenar([],L,L).
concatenar([X|M],L,[X|Z]):-concatenar(M,L,Z).
/*------------------------------------------------------------------*/

/*3-Invierte la lista que recibe en el primer nivel*/invertir([X],[X]).
invertir([X|M],Z):-invertir(M,S), concatenar(S,[X],Z).
/*------------------------------------------------------------------*/

/*4-Calcula la longitud de la lista*/

long([],0):-!.
long([X|Y],S):-long(Y,T),!, S is T + 1.
/*------------------------------------------------------------------*/

/*5-Suma los elementos de la lista*/

suma_elem([X],X):-!.suma_elem([X|Y],S):-suma_elem(Y,T), S is T + X.
/*------------------------------------------------------------------*/

/*6-Devuelve el elemento que se encuentra en la enesima posicion*/

posicion_n([],N,[]):-!.
posicion_n([X|N],1,X):-!.
posicion_n([X|R],N,S):-M is N - 1,posicion_n(R,M,S).
/*------------------------------------------------------------------*/

/*7-Dan como resultado el primer y el ultimoelemento de la lista*/

primer_elem([X|Y],X):-!.

ultimo_elem(L,S):-invertir(L,T),primer_elem(T,S).
/*------------------------------------------------------------------*/

/*8-Calcula la primer posicion donde aparece el elemento X en la lista*/

prim_pos(X,[],0):-!.
prim_pos(X,[X|M],1):-!.
prim_pos(X,[Y|M],S):-prim_pos(X,M,T),S is T + 1./*------------------------------------------------------------------*/

/*9-Elimina el elemento 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)./*------------------------------------------------------------------*/

/*10-Invierte una lista en todos sus niveles*/

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),!.
/*------------------------------------------------------------------*/

/*11-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).
/*------------------------------------------------------------------*/

/*12-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)./*------------------------------------------------------------------*/

/*13-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).
/*------------------------------------------------------------------*/

/*14-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).
/*------------------------------------------------------------------*/

/*15-Determina si la primer lista es prefijo de la segunda*/

prefijo([],M):-!.
prefijo([X],[X|M]):-!.
prefijo([X|L],[X|M]):-prefijo(L,M).
prefijo([X|T],[L|M]):-lista(X),prefijo(X,L),prefijo(T,M)./*------------------------------------------------------------------*/

/*16-Determina si la primer lista es sublista de la segunda*/
sublista([],L):-!.
sublista(L,[X|M]):-prefijo(L,[X|M]).
sublista(L,[X|M]):-lista(X), sublista(L,X).
sublista(L,[X|M]):-sublista(L,M).
/*------------------------------------------------------------------*/

/*17-Elimina todos los elementos de la lista 1 que est n en la 2*/

elim_l1_de_l2([],L,L):-!....
tracking img