Logo 
Search:

Artificial Intelligence Articles

Submit Article
Home » Articles » Artificial Intelligence » ProLogRSS Feeds

Prolog program of Water Jug Problem start with state(0,0) and end with(2,0)

Posted By: Milind Mishra     Category: Artificial Intelligence     Views: 11792

Prolog program of Water Jug Problem start with state(0,0) and end with(2,0).......

Code for Prolog program of Water Jug Problem start with state(0,0) and end with(2,0) in Artificial Intelligence

database
    rstate(integer,integer)
predicates
    state(integer,integer)
    
clauses
        
    state(2,_).
    state(0,0):-
        not(rstate(0,0)),
        assert(rstate(0,0)),    
        state(0,0).
        
    state(X,Y):-
    
        X < 4,
        not(rstate(4,Y)),
        assert(rstate(4,Y)),
        write("\n Rule 1 => (4,",Y,")"),
        state(4,Y).
        
    state(X,Y):-
    
        Y < 3,
        not(rstate(X,3)),
        assert(rstate(X,3)),
        write("\n Rule 2 => (",X,",3)"),
        state(X,3).
    
    state(X,Y):-
    
        X>0,
        not(rstate(0,Y)),
        assert(rstate(0,Y)),
        write("\n Rule 5 => (0,",Y,")"),
        state(0,Y).
    
    state(X,Y):-
    
        Y>0,
        not(rstate(X,0)),
        assert(rstate(X,0)),
        write("\n Rule 6 => (",X,",0)"),
        state(X,0).
    
    state(X,Y):-
    
        X+Y >= 4,
        Y > 0,
        Z=Y-(4-X),
        not(rstate(4,Z)),
        assert(rstate(4,Z)),
        write("\n Rule 7 => (4,",Z,")"),
        state(4,Z).
    
    state(X,Y):-
    
        X+Y >= 3,
        X>0,
        Z=X-(3-Y),
        not(rstate(Z,3)),
        assert(rstate(Z,3)),
        write("\n Rule 8 => (",Z,",3)"),
        state(Z,3).
    
    state(X,Y):-
    
        X+Y <= 4,
        Y > 0,
        Z=X+Y,
        not(rstate(Z,0)),
        assert(rstate(Z,0)),
        write("\n Rule 9 => (",Z,",0)"),
        state(Z,0).
        
    state(X,Y):-
    
        X+Y <= 3,
        X>0,
        Z=X+Y,
        not(rstate(0,Z)),
        assert(rstate(0,Z)),
        write("\n Rule 10 => (0,",Z,")"),
        state(0,Z).
        
    state(X,Y):-
    
        X=0,
        Y=2,
        not(rstate(2,0)),
        assert(rstate(2,0)),
        write("\n Rule 11 => (2,0)"),
        state(2,0).
    
    state(X,Y):-
    
        X=2,
        assert(rstate(0,Y)),
        write("\n Rule 12 => (0,",Y,")"),
        state(0,Y).

goal
    makewindow(1,2,3,"Water Jug Problem",0,0,25,80),
    write("Initially state(0,0)"),
    state(0,0),
    save("output.txt").
    
OUTPUT

Initially state(0,0)
 Rule 1 => (4,0)
 Rule 2 => (4,3)
 Rule 5 => (0,3)
 Rule 9 => (3,0)
 Rule 2 => (3,3)
 Rule 7 => (4,2)
 Rule 5 => (0,2)
 Rule 9 => (2,0)
Press the SPACE bar

    output.txt

rstate(0,0)
rstate(4,0)
rstate(4,3)
rstate(0,3)
rstate(3,0)
rstate(3,3)
rstate(4,2)
rstate(0,2)
rstate(2,0)
  
Share: 



Milind Mishra
Milind Mishra author of Prolog program of Water Jug Problem start with state(0,0) and end with(2,0) is from India.
 
View All Articles

 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
Khanh Nguyen from Viet Nam Comment on: Feb 26
How have you run this code in B-prolog? I don't know to run it. Can you teach me?

View All Comments