2.3. Significado declarativo.
Ejercicios.
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).
(b). ?- f( s(s(1)), dos).
(c). ?- f( s(s(s(s(s(s(1)))))), C).
(d). ?- f( D, tres).
Respuestas en orden:
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 ';' ?
Creo que es asi:
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).
Este no le entendi bien creo que es asi.
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.
Para mi seria asi
traducir( 1, uno).
traducir( 2, dos).
traducir( 3, tres).

No hay comentarios:
Publicar un comentario