/**********************************************************/ /* */ /* Universidad de Alicante */ /* */ /* LOGICA DE PRIMER ORDEN */ /* Prolog */ /* */ /* */ /* S.O. : MS-DOS (Windows) */ /* Interprete : SWI-Prolog */ /* Fichero : EJ06.PL */ /* */ /**********************************************************/ /*-- ESTRUCTURAS DE CONTROL : el corte --*/ /* sumatorio(Num,Sum) <- Sum es el sumatorio desde 1 hasta Num */ sumatorio(1,1) :- !. sumatorio(N,S) :- N1 is N-1, sumatorio(N1,S1), S is N+S1. natural(0). natural(X) :- natural(Y), X is Y+1. /* diventera(Dividendo,Divisor,Cociente) <- Cociente es el resultado diventera(A,B,C) :- natural(C), Y1 is C*B, Y2 is (C+1)*B, Y1=<A, Y2>A, !. dando lugar a la lista L3 */ concatena([],L,L) :- !. concatena([X|L1],L2,[X|L3]) :- concatena(L1,L2,L3). /* borrar(Elem,L1,L2) <- L2 es la lista resultado de borrar todas las ocurrencias del elemento Elem de la lista L1 */ borrar(_,[],[]). borrar(E,[E|L1],L2) :- !,borrar(E,L1,L2). borrar(E,[A|L1],[A|L2]) :- borrar(E,L1,L2). /* sust(E1,E2,L1,L2) <- L2 es la lista resultado de sustituir en la lista L1 todas las ocurrencias del elemento E1 por E2 */ sust(_,_,[],[]). sust(E1,E2,[E1|L1],[E2|L2]) :- !, sust(E1,E2,L1,L2). sust(E1,E2,[Y|L1],[Y|L2]) :- sust(E1,E2,L1,L2). listas-conjuntos L1 y L2 */ union([],L,L). union([X|L1],L2,L3) :- miembro(X,L2), !, union(L1,L2,L3). union([X|L1],L2,[X|L3]) :- union(L1,L2,L3). /* PREGUNTAS : ?- concatena([a,b,c],[d,e],X). ?- concatena([a,b,c],X,[a,b,c,d,e]). ?- concatena(X,Y,[a,b,c]). ?- borrar(a,[a,b,c,d,a,b,a,d],L). ?- sust(a,b,[a,b,c,d,a,b],L). ?- union([a,b,c],[a,d,f,b],L). */