Wednesday, March 25, 2015

Simple Prolog Practice Programs

Program 1:  Using Relations.

Code:

parent(pam, bob).
parent(tom, bob).
parent(tom, liz).
parent(bob, ann).
parent(bob, pat).
parent(pat, jim).

male(tom).
male(bob).
male(pat).
male(jim).
female(pam).
female(liz).
female(ann).

father(X, Y):-male(X), parent(X, Y).
mother(X, Y):-female(X), parent(X, Y).
grandFather(X, Y):-male(X), parent(Z, Y), parent(X, Z).
grandMother(X, Y):-female(X), parent(Z, Y), parent(X, Z).
greatGrandFather(X, Y):-parent(Z, Y), parent(Q, Z), father(X, Q).
greatGrandMother(X, Y):-parent(Z, Y), parent(Q, Z), mother(X, Q).
stepBrother(X, Y):-father(Z, X), father(Z, Y), mother(Q, X), not(mother(Q, Y));
     mother(Z, X), mother(Z, Y), father(Q, X), not(father(Q, Y)).

Program 2: Input/Output from/to Console:

Code:

greetings:-
 write('What is your name?'),
 nl,
 read(X),
 write('Hello '),
 write(X).

Program 3: Writing a Calculator.

Code:

calculator:-
 write('Operations Supported: 1. addition 2. subtraction 3. multiplication 4. division 5. mod 6. squareRoot'),
 nl,
 write('What do you want to do?'),
 read(O),
 write('Operand 1: '),
 read(X),
   (O='squareRoot'->Answer is sqrt(X), write(Answer);
   write('Operand 2: '),read(Y),
    (O='addition'->write('Addition specified'),Answer is X+Y, write(Answer);
     (O='subtraction'->Answer is X-Y, write(Answer);
         (O='multiplication'->Answer is X*Y, write(Answer);
          (O='division'->Answer is X/Y, write(Answer);
        (O='mod'->Answer is mod(X,Y), write(Answer))))))).

Program 4: Find the bigger number in two numbers.

Code:

greater(X, Y):-
 (X>Y->write(X), write(' is greater than '), write(Y);
  (Y>X->write(Y), write(' is greater than '), write(X);
  write(X), write(' is equal to '), write(Y))).

Program 5: Find the biggest number in three numbers.

Code:

greatestThree(X, Y, Z):-
 ( (X<Y;X<Z) ->
  ( Y<Z -> write('Z is the greatest');write('Y is the greatest'));
     ((X=Y,Y=Z)->write('All are equal');write('X is the greatest'))).

Program 6: Find the factorial of a number.

Code:

fact(0,1). 
fact(N,F):-N>0, N1 is N-1,  fact(N1, F1), F is F1*N.

Program 7: Solve the Problem of Towers of Hanoi.

Code:

hanoi(1, A, B, _):-
 write('Move disk from tower '),
 write(A),
 write(' to '),
 write(B),
 nl.
 
hanoi(N, A, B, C):-
    N>1,
 N1 is N-1,
 hanoi(N1, A, C, B),
 hanoi(1, A, B, C),
 hanoi(N1, C, B, A).


Program 8: Display Fibonacci series upto a specified number of elements.

fibonacci(A, B, Upto):-
 Upto>0, 
 Z is A+B,
 write(A),
 nl,
 fibonacci(B, Z, Upto-1).

Program 9: Calculate GCD of two numbers.

gcd(X, Y):-
 X=Y, write(X);
 X=0, write(Y);
 Y=0, write(X);
 X>Y, Z is X-Y, gcd(Z, Y);
 X<Y, Z is Y-X, gcd(X, Z). 

No comments:

Post a Comment