Artificial Intelligence TUTORIAL : 8



1.  Write a program to implement Tower of Hanoi.
domains
      location = right;left;middle
      right,left,middle = symbol
                                             
predicates
      hanoi(integer)
      move(integer,location,location,location)
      inform(integer,location,location)

clauses
      hanoi(N):-
            N=0,
            !,
            write("Enter positive number : "),nl.
     
      hanoi(N):-
            move(N,left,middle,right).
     
      move(1,A,_,C):-
            inform(1,A,C).
     
      move(N,A,B,C):-
            NN=N-1,
            move(NN,A,C,B),
            inform(N,A,C),
            move(NN,B,A,C).
     
      inform(N,L1,L2):-
            write("Move disk ",N,"From ",L1," to ",L2),nl.



2.  Write a program to implement Monkey & Banana (M&B) Problem. M&B Problem: A Monkey is standing at the door of a Room. Banana is hanging in the middle of the Room. Monkey wants to eat the banana but banana is not reachable by the monkey. To get the banana monkey has to use a table lying in a corner of the Room. Monkey need to push the table in the middle of the Room. Then it has to get on the table and get the Banana.
DOMAINS
      st = state(symbol,symbol,symbol,symbol).
PREDICATES

canget(st).
move(st,symbol,st).

CLAUSES
      canget(state(_,_,_,has)).
      canget(State):-move(State1,Move,State2),
                  canget(State2).
      move(state(middle,onbox,middle,hasnot),grasp,state(middle,onbox,middle,has)).
     
      move(state(P1,atfloor,P1,Has),climb,state(P1,onbox,P1,Has)).
     
      move(state(P1,atfloor,P1,Has),push,state(P2,atfloor,P2,Has)).
     
      move(state(P1,onfloor,P2,Has),walk,state(P2,atfloor,P2,Has)).
or
     
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



3.  Write a prolog program to solve 8-queen problem.
domains
      List = integer*
      Queen = integer
     
predicates
del(integer,List,List)

       solution(List)
       safe(List)
       noattack(integer,List,integer)
       perm(List,List)
       
clauses
      del(X,[X|Y],Y).
del(X,[Y|T],[Y|T1]):-
del(X,T,T1).
perm([],[]).
perm(L,[X|P]):-
del(X,L,L1),
perm(L1,P).

      solution(S):-
                  perm([1,2,3,4,5,6,7,8],S),
                  safe(S).
      safe([]).              
      safe([Queen|Others]):-
      noattack(Queen,Others,1),
      safe(Others).
     
      noattack(_,[],_).
     
      noattack(Y,[Y1|List],X_dist):-
                              Y-Y1 <> X_dist,
                              Y1-Y <> X_dist,
                              Dist=X_dist+1,
                              noattack(Y,List,Dist).

Related Posts Plugin for WordPress, Blogger...

Engineering material

GTU IDP/ UDP PROJECT

GTU IDP/ UDP PROJECT

Patel free software download

  © Blogger templates The Professional Template by Ourblogtemplates.com 2008

Back to TOP