1.Sugiera una representación para rectángulos,
cuadrados y círculos como objetos Prolog estructurados.
Escriba algunos ejemplos que representen objetos
físicos concretos utilizando la representación que sugirió.
Circulo(punto(X,Y),radio(X,Y))
Rectangulo(punto(X,Y),puntoc,punto(X,Y),punto(X,Y)).
Cuadrado(punto(X,Y),punto(X,Y),punto(X,Y),punto(X,Y)).
Ejemplos:
Triangulo(punto(X,Y),punto(X,Y),punto(X,Y)).
Línea(punto(X,Y),punto(X,Y)).
Rombo(punto(X,Y),punto(X,Y),punto(X,Y),punto(X,Y)).
2.2. Matching (empatamiento).
1.¿Las siguientes operaciones de matching tienen
éxito o fallan?,Si tienen éxito, ¿cuáles son las instanciaciones
resultantes en las variables?
(a). punto( A, B) = punto( 1, 2).
Tiene éxito
Sus instanciaciones resultantes son:
A=1
B=2
(b). punto( A, B) = punto( X, Y, Z).
No tiene éxito
false.
(c). +( 2, 2) = 4.
No tiene éxito
false.
(d). +( 2, D) = +( E, 2).
Tiene éxito
Sus instanciaciones resultantes son:
D=E
E=2
(c). triangulo(punto(-1,0),P2,P3) = triangulo(P1,punto(1,0),punto(0,Y)).
Tiene éxito
Sus instanciaciones resultantes son:
P2 = punto(1, 0)
P3 = punto(0, Y)
P1 = punto(-1, 0)
1 . Considere el siguiente programa:
f( 1, uno).
f( s(1), dos).
f( s(s(1)), tres).
f( s(s(s(X))), N) :- f( X, N).
¿Cómo contestará Prolog las siguientes preguntas?
Cuando sean posibles varias respuestas, dé al menos dos de ellas.
(a). ?- f( s(1), A).
Respuesta de Prolog:
A=dos
(b). ?- f( s(s(1)), dos).
Respuesta de Prolog :
false.
(c). ?- f( s(s(s(s(s(s(1)))))), C).
Respuesta de Prolog:
(d). ?- f( D, tres).
Respuesta de Prolog:
D = s(s(1)).
2. El siguiente programa dice que dos personas son
parientes si,
(a). uno es predecesor del otro, ó
(b). ambos tienen un predecesor común, ó
(c). ambos tienen un sucesor común :
parientes( X, Y) :- predecesor( X, Y).
parientes( X, Y) :- predecesor( Y, X).
parientes( X, Y) :- predecesor( Z, X), predecesor( Z, Y).
parientes( X, Y) :- predecesor( X, Z), predecesor( Y, Z).
¿ puede usted acortar el programa usando la notación de ';' ?
parientes(X,Y) :- predecesor(X,Y) ; predecesor(Y,X) ;predecesor(Z,X),
predecesor(Z,Y) ; predecesor(X,Z) , predecesor(Y,Z).
3.Reescriba el siguiente programa sin utilizar la notación de ';' :
traducir( Numero, Palabra) :-
Numero = 1, Palabra = uno;
Numero = 2, Palabra = dos;
Numero = 3, Palabra = tres.
traducir(Numero,Palabra) :- Numero=1,Palabra=uno.
traducir(Numero,Palabra) :- Numero=2,Palabra=dos.
traducir(Numero,Palabra) :- Numero=3,Palabra =tres.
No hay comentarios:
Publicar un comentario