Tarea Prolog 1

  1. Dado el árbol familiar:

padreDe(pam, bob).
padreDe(tom, bob).
padreDe(tom, liz).
padreDe(bob, ann).
padreDe(bob, pat).
padreDe(pat, jim).

Conteste las siguientes preguntas:

¿Quiénes son los nietos de Tom? Ann, Pat.

?- padreDe(tom, X), padreDe(X, Y).
X=bob,
Y=ann;
Y=pat;

¿Tendrán Ann y Pat un padre en común? Sí, Bob.

?- padreDe(X,ann), padreDe(X,pat).
X=bob

padreDe( jim, X). No, Jim no tiene hijos.

?- padreDe(jim, X).
false.

padreDe( X, jim). Pat.

?- padreDe(Padre, jim).
Padre=Pat

padreDe( pat, X), padreDe( X, pat). Pat no es nieta de sí misma.

?- padreDe(pat, X), padreDe(X, pat).
false.

padreDe( pat, X), padreDe( X, Y), padreDe( Y, jim). Pat es madre de Jim, no su bisabuela.

?- padreDe( pat, X), padreDe( X, Y), padreDe( Y, jim).
false.

¿Quién es uno de los padres de Pat? Bob.

?- padreDe( Padre, pat).
Padre=bob.

¿Tiene Liz un hijo? No.

?- padreDe(liz, Hijo).
false.

¿Quién es el abuelo de Pat? Pam y Tom.

?- padreDe(Abuelo, Padre), padreDe(Padre, pat). 
Abuelo=pam, Padre=bob;
Abuelo=tom, Padre=bob;

2.

man(tom).
man(bob).
man(jim).
woman(liz).
woman(pat).
woman(pam).
woman(ann).

mother(X,Y) :- parent(X,Y), woman(X).

sister(X,Y) :- parent(Parent,X), parent(Parent, Y), woman(X).

grandfather(Person1, Person2) :- parent(Person1, Child), parent(Child, Person2), man(Person1).

Hay un mono en la puerta dentro de una habitación. En la mitad de la habitación una banana cuelga del techo. El mono está hambriento y quiere la banana, pero no puede alcanzarla. Debajo de la ventana de la habitación hay una caja que el mono puede usar. El mono puede ejecutar las siguientes acciones: caminar sobre el piso, trepar la caja, empujar la caja (siempre que esté a un lado de la caja) y coger la banana si está parado sobre la caja, directamente bajo la banana. ¿Podrá el mono coger la banana?

% state(id, name).
state('Mono en la puerta').
state('Mono a lado de la caja').
state('Caja en la ventana').
state('Parado sobre la caja, directamente bajo la banana').
state('Con banana').
start(state('Mono en la puerta')).
goal(state('Con banana')).

% action(current state, action, new state, cost?).
action(state('Mono en la puerta'),'Caminar sobre el piso', state('Mono a lado de la caja')).
action(state('Mono a lado de la caja'), 'Empujar la caja', state('Caja en la ventana')).
action(state('Caja en la ventana'),'Trepar la caja', state('Parado sobre la caja, directamente bajo la banana')).
action(state('Parado sobre la caja, directamente bajo la banana'),'Coger la banana', state('Con banana')).

% Agent acts using available actions until it lies its goal.
act(State) :- goal(State).
act(State) :- action(State, _, NewState), act(NewState).

% Query this for your agent acts rationally.
% ?- start(State), act(State).
Demo