/* Description:
Imagine a room containing a monkey, chair and some bananas. That have been hanged from the center of ceiling. If the monkey is clever enough he can reach the bananas by placing the chair directly below the bananas and climb on the chair .
The problem is to prove the monkey can reach the bananas.
The monkey can perform the following actions:
1) Walk on the floor
2) Climb the box
3) Push the box around(if it is beside the box).
4) Grasp the banana if it is standing on the box directly under the banana.
*/
% Production rules:
can_reach 🡪 clever,close.
get_on: 🡪 can_climb.
under 🡪 in room,in_room, in_room,can_climb.
Close 🡪 get_on,under | tall
% Clauses:
in_room(bananas).
in_room(chair).
in_room(monkey).
clever(monkey).
can_climb(monkey, chair).
tall(chair).
can_move(monkey, chair, bananas).
can_reach(X, Y):-clever(X),close(X, Y).
get_on(X,Y):-
can_climb(X,Y).
under(Y,Z):-
in_room(X),in_room(Y),
in_room(Z),can_climb(X,Y,Z).
close(X,Z):-
get_on(X,Y), under(Y,Z);
tall(Y).
% Queries:
?- can_reach(A, B).
A = monkey.
B = banana.
?- can_reach(monkey, banana).
Yes.
1) Write simple fact for following: A. Ram likes mango. B. Seema is a girl. C. Bill likes Cindy. D. Rose is red. E. John owns gold View Solution
2) Write predicates one converts centigrade temperatures to Fahrenheit, the other checks if a temperature is below freezing. View Solution
3) Write a program to solve the Monkey Banana problem View Solution
4) WAP in turbo prolog for medical diagnosis and show the advantages and disadvantages of green and red cuts. View Solution
5) Write a program to solve 4-Queens problem View Solution
6) Write a program to solve Traveling salesman problems View Solution
7) Write a program to solve water jug problems using Prolog View Solution
8) Write simple Prolog functions such as the following. Take into account lists which are too short. -- remove the Nth item from the list. -- insert as the Nth item. View Solution
9) Assume the prolog predicate gt(A, B) is true when A is greater than B. Use this predicate to define the predicate addLeaf(Tree, X, NewTree) which is true if NewTree is the Tree producedby adding the item X in a leaf node. Tree and NewTree are binary search trees. The empty treeis represented by the atom nil. View Solution
10) Write a Prolog predicate, countLists(Alist, Ne, Nl), using accumulators, that is true when Nl is the number of items that are listed at the top level of Alist and Ne is the number of empty lists. Suggestion: First try to count the lists, or empty lists, then modify by adding the other counter. View Solution
11) Define a predicate memCount(AList,Blist,Count) that is true if Alist occurs Count times within Blist. Define without using an accumulator. Use "not" as defined in utilities.pro, to make similarcases are unique, or else you may get more than one count as an answer. View Solution