Ejercicios Prolog IC. 2007/08

Anuncio
Ejercicios Prolog
IC. 2007/08
Escribir las reglas Prolog que definen el predicado:
0. Member: Write prolog code for a predicate member(A, L) which is valid if
argument A is a member of list L.
Solution:
member(E,[E|_]).
member(E,[_|Xs]):- member(E,Xs).
1. dobletes(Xs), tal que sea cierto si y sólo si Xs es una lista de números tal que el
primero y el segundo son iguales, y el tercero y cuarto también, y así sucesivamente.
Por ejemplo, dobletes([3,3,1,1,9,9]) es cierto, pero dobletes([6,6,4,3,7]) no lo es.
2. media(Xs, M) Media de los elementos de una lista: M is the average of the numbers
in list Xs.
3. intercaladas(Xs,Ys,Zs), tal que sea cierto si y sólo si Zs es una lista de números
formada por el primero de Xs seguido por el primero de Ys, seguido a su vez por el
segundo de Xs y el segundo de Ys, y luego los terceros, y así sucesivamente. Ambas
listas Xs e Ys deben tener igual longitud. Por ejemplo, intercaladas([1,5,9], [6,3,4],
[1,6,5,3,9,4]) es cierto, pero intercaladas([6,1], [4,3], [6,1,4,3]) no lo es.
4. borrar(Xs,E,Rs), tal que sea cierto cuando la tercera lista es el resultado de la
primera lista. Por ejemplo, la consulta borrar([1,3,2,3], 3, [1,2]) devuelve TRUE, y
borrar([a,b,1,2,b], b, [a,1,2,b]) devuelve FALSE
5. uneListas(Xs,Ys,Rs), tal que da TRUE si la tercera lista es la concatenación de las
dos primeras: uneListas([1,2], [2,3], [1,2,2,3]) devuelve TRUE, y uneListas([1,2], [4,5],
[1,2,5]) devuelve FALSE
6. pertenecem(E, Xs), tal que da TRUE si el elemento E está dentro de la lista
multinivel Xs. Por ejemplo, pertenecem(1, [2, [3,1,4], 5]) devuelve TRUE,
pertenecem(1, [2, [3,4], 5]) devuelve FALSE
7. Considera un predicado Prolog definido con las siguientes reglas:
R1:
R2:
R3:
r([], X,X).
r(X,[],X).
r(Xs, [Y|Ys], [Y|Zs]) :- r(Ys, Xs, Zs).
¿Qué valor de la variable X haría cierto dicho predicado en la siguiente consulta?
r([1,2], [a,b,c,d], X).
Muestra gráficamente y explica el encadenamiento de reglas (con unificaciones,
objetivos intermedios, etc.) que utiliza Prolog para obtener el valor de X que has dado
como respuesta en el apartado anterior.
Descargar