Ejercicios
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).
Como contestara prolog las siguientes preguntas?
(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 exactas
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) ; parientes( X, Y) :- predecesor( Y, X) ;
parientes( X, Y) :- predecesor( Z, X), predecesor( Z, Y) ; parientes( X, 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 = 1, Palabra = dos.
traducir( Numero, Palabra) :- Numero = 1, Palabra = tres.
No hay comentarios:
Publicar un comentario