EJERCICIOS PROLOG
/* suma de los elementos de una lista */
total([],0).
total([C|L],T):-
total(L,T1),
T is T1+C.
/* longitud de una lista */
lenght([],0).
lenght([_|L],T):-
lenght(L,T1),T is T1+1.
/* adicionar un elemento de la cabeza de una lista */
addhead(X, L, [X|L]).
/* borrar la cabeza de una lista*/
deletehead(L,L1):-
addhead(_,L1,L).
/* adicionar al final de unalista */
addend(X, [], [X]).
addend(X, [C|R], [C|R1]):-
addend(X, R, R1).
/* borrar el ultimo elemento de una lista */
deleteend(L,L1):-
addend(_,L1,L).
/* borrar un elemento de una lista dadoel indice */
delete(Indice,L,L1):-
insert(_,Indice,L1,L).
/* insertar un elemento en una lista dado el indice en que se quiere insertar*/
insert(X,0,L1,[X|L1]).
insert(X,Pos,[C|R],[C|R2]):-Pos1 is Pos-1,
insert(X,Pos1,R,R2).
/* devuelve las posiciones en que se encuentra un elemento X*/
pos(X,[X|_],0).
pos(_,[],_):-
!,fail.
pos(X,[_|R],Pos):-
pos(X,R,Pos1),
Pos is Pos1+1.
/*clonar lista*/
clonlist([], []).
clonlist([C|R], [C|R1]):-
clonlist(R, R1).
/* elemento X de una Lista*/
getElem(0,[C|_],C):-!.
getElem(X,[_|R],Sol):-
X1 is X -1,
getElem(X1,R,Sol)
.
/*existencia de un elemento en una lista */
existe(_,[]):-fail.
existe(X,[X|_]):-!.
existe(X,[_|R]):-
existe(X,R).
/* elminar un elemento de la lista */
eliminar(_,[],[]):-fail.eliminar(X,[X|R],R).
eliminar(X,[C|R],[C|R1]):-
eliminar(X,R,R1)
.
/* subconjuntos de una lista */
subconjunto([],[]).
subconjunto([C|R],[C|R1]):-
subconjunto(R,R1).
subconjunto(L,[_|R1]):-subconjunto(L,R1).
/* permutaciones de una lista*/
permutaciones([],[]).
permutaciones([C1|R1],L):-
eliminar(C1,L,Rest),
permutaciones(R1,Rest).
/* laboratorio */
vacia([]).
subcPerm(L,L1):-subconjunto(T,L1),
permutaciones(L,T)
.
check([],[],A,A).
check([C|R],[+C|R1],SumaTemp,Suma):-
M is SumaTemp + C,
check(R,R1,M,Suma)
.
check([C|R],[-C|R1],SumaTemp,Suma):-
M is SumaTemp - C,...
Regístrate para leer el documento completo.