sábado, 22 de junio de 2013

Ejercicios 2.3

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