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.