NOMBRE: _____________________________________
NIA: _______________________________________________
A. Programacin Lgica
2. Define un predicado set(L) que tenga xito si L es un conjunto (e.d. una lista sin
elementos repetidos) y falle si no lo es (e.d. si no es una lista o es una lista con
elementos repetidos).
Respuesta:
set([]).
set([X|L]) :- not(member(X,L)), set(L).
3. Considera el programa:
p([],X,X).
p([X|X1],Y,[X|Z]) :- p(X1,Y,Z).
q(X,Y,Z) :- p(X,_,Y) , p(X,_,Z).
(i) Que hace q(X,Y,Z) si Y y Z se le pasan como entradas y devuelve X como salida?
Respuesta: Si
4. Escribe un predicado que borre una vez un elemento de una lista, e.d. que se
comporte como sigue con el siguiente ejemplo:
?- borra(a,[a,b,a],L).
L=[b,a];
L=[a,b];
no
Respuesta:
borra(X,[X|T],T).
borra(X,[Y|T],[Y|T1]) :- borra(X,T,T1).
(asumiendo que la lista de entrada es no vacia y que el elemento a borrar aparece en la lista)
member(X,[X|Xs]) :- !.
member(X,[Y|Ys]) :- member(X, Ys).
Respuesta: Que en caso de multiples soluciones, solo nos regresa una de ellas.
B. Programacin Funcional
fun gcd 0 n = n
| gcd n 0 = n
| gcd m n = if (m > n) then gcd (m-n) n
else gcd (n-m) m
Respuesta:
gcd 0 3
3
Respuesta:
o(7-1)
o(6)
e(6-1)
e(1)
false
3. Describe 3 diferencias y una similitud entre la programacin funcional y la
programacin lgica.
Diferencias:
Similitud:
Respuesta:
member(X,[X|_]).
member(X,[_|Xs]) :- member(X,Xs).
Respuesta: