LENGUAJES DE PROGRAMACIÓN GUIA DE PROLOG

Anuncio
Departamento de Informática
LENGUAJES DE PROGRAMACIÓN
GUIA DE PROLOG
PREGUNTA 1
Asuma que la relación padre (como fue vista en clases) con los hechos que definen las relaciones de
parentesco para maria, juan, pedro, carola, ana, paty y aldo.
a) Conteste que responde Prolog a:
?- padre(pedro, X).
?- padre (X, pedro).
?- padre(maria, X), padre(X, paty).
?- padre((juan, X), padre(X, Y), padre(Y, ana).
En cada caso analice cómo Prolog resuelve la consulta tratando de satisfacer la verdad de cláusulas y
hechos.
b) ¿Cómo formularía las siguientes preguntas?
¿Quién es el padre de paty?
¿Tiene pedro algún hijo?
¿Quiénes son los abuelos de aldo?
PREGUNTA 2
a) Traduzca a Prolog las siguientes sentencias:
• Todo quien tiene un niño es feliz (introduzca una relación de un argumento feliz)
• Para todo X, si X tiene un niño que tiene una hermana, entonces X tiene dos niños (introduzca una
nueva relación de un argumento tienedosniños)
b) Defina la relación nieto usando la relación padre de la pregunta anterior.
c) Defina la relación tia(X, Y) en término de padre y hermana.
PREGUNTA 3
Considere las siguientes alternativas de definición de la relación antepasado:
antepasado(X, Z) :- padre(X, Z).
antepasado(X, Z) :- padre(Y, Z), antepasado(X, Y).
¿Le parece una definición apropiada de antepasado? (compare con la definición vista en clases)
PREGUNTA 4
a) ¿Cuáles de las siguientes expresiones son sintácticamente correctos para objetos Prolog? (encaso
afirmativo indique tipo de objeto: átomo, número, variable, estructura)
Maria
ir(maria, sur)
tres(Negro(Gato))
maria
45
_maria
5(X, Y)
`Maria va al sur
+(norte, oeste)
a) Sugiera una representación para rectángulos, cuadrados y círculos como estructuras de objetos Prolog
(recuerde los ejemplos de puntos, triangulos y segmentos vistos en clases).
RMA/2001
Departamento de Informática
PREGUNTA 5
a) ¿Cuál de las siguientes operaciones de calce serán exitosas o fallarán? En caso exitoso, indique los
valores resultantes para cada variable.
punto(A, B) = punto(1, 2)
punto(A, B) = punto(X, Y, Z)
suma(2, 2) = 4
+(2, D) = +(E, 2)
triangulo(punto(-1, 0), P2, P3) = triangulo(P1, punto(1, 0), punto(0, Y))
b) Usando la representación de un segmento de línea escriba un término que represente la línea vertical
X=5.
PREGUNTA 6
a) Considere el siguiente programa Prolog:
f(1, uno).
f(s(1), dos).
f(s(s(1)), tres).
f(s(s(s(X))), N) :- f(X, N).
¿Cómo responderá Prolog a las siguientes consultas? (si existen varias respuestas dé al menos dos)
?- f(s(1), A).
?- f(s(s(1)), dos).
?- f(s(s(s(s(s(s(1)))))), C).
?- f(D, tres).
b) Reescriba el siguiente programa sin usar notación punto y como (;).
Traducir(Numero, Palabra) :-
Numero = 1, Palabra = uno;
Numero = 2, Palabra = dos;
Numero = tres, Palabra = tres.
PREGUNTA 7
a) Escriba una meta, usando conc, para borrar los últimos tres elementos de una lista L produciendo otra
lista L1 (ayuda: L es la concatenación de L1 y los últimos tres elementos).
b) Escriba una secuencia de metas para borrar los primeros tres elementos y los últimos tres elementos de
una lista L y producir la lista L2.
c) Defina una relación ultimo(Item, Lista) que es verdadera si Item es último elemento de Lista.
Escriba dos versiones: una usando conc y otra sin usar conc.
RMA/2001
Departamento de Informática
PREGUNTA 8
a) Defina dos predicados largopar(L) y largoimpar(L) que son verdaderos si los largos de la lista L
son par o impar respectivamente.
b) Defina la relación invertir(L, R) que es verdadera si R es la lista invertida de L.
c) Defina palindrome(L) si la lista L es un palíndrome. Un palíndrome es una lsuta que al invertirla es
la misma lista.
d) Defina la relación subconj(S, S1), donde S y S1 son listas representando conjuntos, que es verdadera si
S1 es subconjunto de S.
PREGUNTA 9
a) Defina la relación max(X, Y, Max) que es verdadera si Max es el número más grande entre X e Y.
b) Defina el predicado maxlist(L, Max) que es verdadero si Max es el elemento mayor en la lista L.
c) Defina sumlist(L, S) que es verdadero si S es la suma de los elementos de L.
d) ¿Qué pasa en la subpregunta anterior si la lista no contiene puros números?
e) Defina un predicado ordenado(L) si la lista de números L está ordenada en forma ascendente.
PREGUNTA 10
a) Dadas dos listas, Candidatos, Vetados, escriba una secuencia de metas (usando member y not) que
a través de backtracking encuentre todos los items de Candidatos que no están en Vetados.
b) Defina la relación de diferencia de conjuntos dif(C1, C2, D) que es verdadera si D = C1- C2.
RMA/2001
Descargar