domingo, 23 de junio de 2013

CAPITULO 4

Capitulo 4

                    
familia(persona(juan,perez,fecha(7,mayo,1950),trabaja(uag,2000)),
      persona(ana,flores,fecha(9,mayo,1951),no_trabaja),
[persona(jose,perez,fecha(5,mayo,1973),no_trabaja),
 persona(susana,perez,fecha(5,junio,1975),no_rabaja)]).

familia(
    persona(jorge,flores,fecha(21,abril,1953),trabajando(uag,2005)),
persona(edith,juarez,fecha(5,enero,1960),no_trabaja),
    [persona(pedro,flores,fecha(1,julio,1980),no_trabaja
    ]).


%X es esposo.
esposo(X):-familia(X,_,_).

%X es esposa.
esposa(X):-familia(_,X,_).

%X es hijo.
hijo(X):-familia(_,_,Hijos),miembro(X,Hijos).
miembro(X,[X|L]).
miembro(X,[Y|L]):- miembro(X,L).

%Existe persona.
existe(Persona):-esposo(Persona);esposa(Persona);hijo(Persona).


%Fecha de nacimiento.
fecha_de_nacimiento(persona(_,_,Fecha,_),Fecha).

%Salario de una persona.
salario(persona(_,_,_,trabaja(_,S)),S).
salario(persona(_,_,_,no_trabaja),0).

%Ingreso total de una familia.
total([],0).
total([Persona|Lista],Suma):- salario(Persona,S),total(Lista,Resto),Suma+Resto.

  Ejercicios.
Escribir preguntas para encontrar lo siguiente:
a). Nombres de las familias que no tienen hijos.
?- familia(persona(nombre,_,no tienen.hijos)).
b). Nombres de todos los hijos que no trabajan.
?-hijo(persona(nombre,_,no_trabaja)).
c). Nombres de las familias con esposas que trabajan y esposos que no trabajan.
?-familia(esposa(persona(nombre,trabaja)),esposo(persona(nombre,_,no_trabaja))).
d). Todos los hijos cuyos padres difieren en edad con al menos 10 años.
edad(padre,hijo),difieren(padre,hijo),edad >10anio.
e). Definir la relación: gemelos(Hijo1, Hijo2) que sirva para encontrar geme-los en la
base de datos.
?.-existe(gemelos(persona(nombre,apellido,fecha(_,_,_)))).



8). Todas las familias que tengan un ingreso por miembro de familia menor a 1000. 



(C). Resuelva usted solo los 5 ejercicios.

a). Nombres de las familias que no tienen hijos.

 familia(Esposo,Esposa,[]).
  
b). Nombres de todos los hijos que no trabajan.


hijo(X), salario(X,0). 



c). Nombres de las familias con esposas que trabajan y esposos que no trabajan.




familia(Y,Esposa,_), salario(Y,0). 




Ayuda Fuente: http://cocolibre.blogspot.mx/2013/04/ia-con-prolog-actividad-c41-usando.html  


d). Todos los hijos cuyos padres difieren en edad con al menos 10 años.

familia(Espo,Espa,Hijos), fecha_nacimiento(Espo,fecha(_,_,A1)), fecha_nacimiento(Espa,fecha(_,_,A2)), A2-A1 > 9, Hijos \= [].


e). Definir la relación: gemelos(Hijo1, Hijo2) que sirva para encontrar geme-los en la
base de datos. 

gemelos(H1,H2). 

No hay comentarios:

Publicar un comentario