====== Monkey banana ====== {{tag>problem_solving fun}} ===== Description ===== A program for the monkey and banana problem. **Source**: PROLOG programming for artificial intelligence, 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7. ===== Download ===== Program source code: {{monkey_banana.pl}} ===== Listing ===== % Figure 2.14 A program for the monkey and banana problem. % move( State1, Move, State2): making Move in State1 results in State2; % a state is represented by a term: % state( MonkeyHorizontal, MonkeyVertical, BoxPosition, HasBanana) move( state( middle, onbox, middle, hasnot), % Before move grasp, % Grasp banana state( middle, onbox, middle, has) ). % After move move( state( P, onfloor, P, H), climb, % Climb box state( P, onbox, P, H) ). move( state( P1, onfloor, P1, H), push( P1, P2), % Push box from P1 to P2 state( P2, onfloor, P2, H) ). move( state( P1, onfloor, B, H), walk( P1, P2), % Walk from P1 to P2 state( P2, onfloor, B, H) ). % canget( State): monkey can get banana in State canget( state( _, _, _, has) ). % can 1: Monkey already has it canget( State1) :- % can 2: Do some work to get it move( State1, Move, State2), % Do something canget( State2). % Get it now ===== Comments =====