miércoles, 28 de mayo de 2014

2.3 Prolog

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: 




(b). ?- f( s(s(1)), dos). 

Respuesta: 


(c). ?- f( s(s(s(s(s(s(1)))))), C). 

Respuesta: 


(d). ?- f( D, tres). 

Respuesta: 


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 ';' ?  



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. 


No hay comentarios.:

Publicar un comentario