Operacion con listas prolog

3311 palabras 14 páginas
% BIBLIOTECA PROLOG - Versión 2.01 - 05/2005 % % CODIGO PARA OPERACIONES CON LISTAS

Autores: RB, JJC, MNG, CEP

% GENERALIDADES % Determinar si lo que se recibe es una lista % Ejemplo: lista(1). % lista([1,2]).

No Yes

lista([]):-!. lista([_X|Y]):-lista(Y).
% Devuelve la longitud de la lista que se le pasa por argumento. % Ejemplo: long([1,3,7,4],X). X=4

long([],0):-!. long([_X|Y],S):-long(Y,T), S is T+1.
% Maximo elemento de una lista % Ejemplo: maximo([1,5,3,-2],X).

X=5

maximo([X],X). maximo([X|Xs],X):- maximo(Xs,Y), X >=Y. maximo([X|Xs],N):- maximo(Xs,N), N > X.
% Mínimo elemento de una lista % Ejemplo: minimo([1,5,3,-2],X). X=-2

minimo([X],X). minimo([X|Xs],X):- minimo(Xs,Y), X =< Y. minimo([X|Xs],N):-
…ver más…

% Elimina los N ultimos elementos de una lista y devuelve el resto. % Ejemplo: sacaNult([1,2,3,4,5],2,L). L = [1,2,3]

sacaNult(L,N,R):-invertir(L,L1),sacaNpri(L1,N,R1),invertir(R1,R).
% Elimina el elemento X de la lista en el 1º nivel % Ejemplo: eliminaX([1,2,3,4,5],3,L). % eliminaX([1,2,[3,4],5,3],3,L). L=[1,2,4,5] L=[1,2,[3,4],5]

eliminaX([],_X,[]):-!. eliminaX([X|M],X,Z):- eliminaX(M,X,Z),!. eliminaX([R|M],X,[R|Z]):- eliminaX(M,X,Z),!.
% Elimina el elemento X de la lista en todos los niveles % Ejemplo: eliminaMx([1,2,[3,4],5,3],3,L). % eliminaMx([2,[3,4],5,3],4,L). L=[1,2,[4],5] L=[2,[3],5,3]

eliminaMx([],_X,[]):-!. eliminaMx([X],X,[]):-!. eliminaMx([X|M],X,S):-eliminaMx(M,X,S),!. eliminaMx([R|M],X,S):-lista(R),eliminaMx(R,X,T),eliminaMx(M,X,P),concatenar([T],P,S),!. eliminaMx([R|M],X,S):-eliminaMx(M,X,T),concatenar([R],T,S).
% Elimina todos los elementos de la lista 2 que estan en la 1 % Ejemplo: elim12([1,4,3,2,7,9],[2,1],L). L=[] % elim12([2,1],[1,4,3,2,7,9],L). L=[4,3,7,9] % elim12([1,4],[1,2,[4,6],5,3],L). L=[2,[6],5,3]

elim12([],L,L):-!. elim12([X|M],L,S):-eliminaMx(L,X,T),elim12(M,T,S).
% Elimina los elementos repetidos que estan en una lista, dejando el que primero ocurre % Ejemplo: eliminaR([2,[3,4],5,3],L). L=[2,[3,4],5] % eliminaR([2,[3,4],1,5,1,3],L). L=[2,[3,4],1,5]

eliminaR([],[]):-!. eliminaR([X|M],S):-not(lista(X)),eliminaX(M,X,T),eliminaR(T,Y),concatenar([X],Y,S). eliminaR([X|M],S):-lista(X),elim12(X,M,T),eliminaR(X,Y),

Documentos relacionados

  • Pilas colas y árboles en prolog
    8906 palabras | 36 páginas
  • Lenguajes de programación lógica e internet.
    2839 palabras | 12 páginas
  • Origen de la programacion
    4282 palabras | 18 páginas
  • Origen de la programacion
    4271 palabras | 18 páginas
  • Iso 14000 en ford
    629 palabras | 3 páginas
  • Historia De Los Lenguajes De Programación
    12451 palabras | 50 páginas
  • Haskell
    1894 palabras | 8 páginas
  • Lenguaje de programacion
    2222 palabras | 9 páginas
  • Macroprocesadores
    1281 palabras | 6 páginas
  • Paradigmas de programacion
    4302 palabras | 18 páginas