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.
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 \= [].
base de datos.
gemelos(H1,H2).








No hay comentarios:
Publicar un comentario