AI practicals
AI practicals
fibonacci(0, 0).
fibonacci(1, 1).
fibonacci(N, Result) :-
fibonacci(N, Result, [0, 1]).
fibonacci(0, 0, _).
fibonacci(1,
Query:-
fibonacci(5,N).
Output:-
fibonacci(5,N).
N=5
Experiment -4
Aim: WAP in prolog to implement a Quick sort
Program:-
quicksort([], []).
quicksort([X],[X])
childnode(a,b).
childnode(a,c).
childnode(c,d).
childnode(c,e).
path(A,B,[A|L]):-child(A,B,L).
child(A,B,[B|[]]):- childnode(A,B),!.
Query:-
path(a,e,L).
Output:-
path(a,e,L)
L = [a, c, e]
Experiment -5
Aim: WAP in Prolog to implement Breath First Search
Program:-
go(Start, Goal) :-
empty_queue(Empty_open),
state_record(Start, nil, State),
add_to_queue(State, Empty_open, Open),
empty_set(Closed),
path(Open, Closed, Goal).
path(Open,_,_) :- empty_queue(Open),
write('graph searched, no solution found').
mov(State, Next),
% not (unsafe(Next)),
state_record(Next, _, Test),
not(member_queue(Test, Open)),
not(member_set(Test, Closed)),
printsolution(State_record, Closed) :-
state_record(State, Parent, State_record),
state_record(Parent, _, Parent_record),
member(Parent_record, Closed),
printsolution(Parent_record, Closed),
write(State), nl.
move(state(middle,onbox,middle,hasnot),grasp,state(middle,onbox,middle,has)).
move(state(P,onfloor,P,H),climb,state(P,onbox,P,H)).
move(state(P1,onfloor,P1,H),push(P1,P2),state(P2,onfloor,P2,H)).
move(state(P1,onfloor,B,H),walk(P1,P2),state(P2,onfloor,B,H)).
canget(state(_,_,_,has)).
Query:-
canget(state(atdoor,onfloor,atwindow,hasnot)).
canget(state(atdoor,onbox,atwindow,hasnot)).
Ourput:-
canget(state(atdoor,onfloor,atwindow,hasnot)).
true
canget(state(atdoor,onbox,atwindow,hasnot)).
false
Experiment -7
Aim:- WAP in Prolog to implement Tower of Hanoi
Program:-
move(1,X,Y,_) :-
write('Move top disk from '),
write(X),
write(' to '),
write(Y),
nl.
move(N,X,Y,Z) :-
N>1,
M is N-1,
move(M,X,Z,Y),
move(1,X,Y,_),
move(M,Z,Y,X).
Query:-
move(3,x,y,z).
move(4,x,y,z).
Output:-
move(3,x,y,z).
Move top disk from x to y
Move top disk from x to z
Move top disk from y to z
Move top disk from x to y
Move top disk from z to x
Move top disk from z to y
Move top disk from x to y
true
move(4,x,y,z).