0% found this document useful (0 votes)
236 views23 pages

31-40 Prolog Program

The document contains 10 questions about logic programming concepts. Question 1 defines facts about a chair belonging to a person and its properties. Question 2 checks if numbers can form a triangle side. Question 3 defines likes/dislikes between people. The remaining questions cover animal classification, arithmetic operations, factorials, family relationships, planetary orbits, and list lengths.

Uploaded by

CHANDRA BHUSHAN
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
236 views23 pages

31-40 Prolog Program

The document contains 10 questions about logic programming concepts. Question 1 defines facts about a chair belonging to a person and its properties. Question 2 checks if numbers can form a triangle side. Question 3 defines likes/dislikes between people. The remaining questions cover animal classification, arithmetic operations, factorials, family relationships, planetary orbits, and list lengths.

Uploaded by

CHANDRA BHUSHAN
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 23

Ques.1.

/* Facts--- */

ako(chair, furniture). ako(chair, seat). isa(your_chair, chair). isa(you, person). made_of(your_chair, wood). colour(wood, brown). belongs_to(your_chair, you).

/* Queries--

1. What is the colour of your chair?

2. Determine whether your chair is a seat.

3. Determine whether your chair is a furniture.

4. Determine whether your chair belongs to a person.

Solutions---

1. What is the colour of your chair? Ans-- made_of(your_chair,X),colour(X,Y).

output--

X = wood Y = brown

yes

2. Determine whether your chair is a seat. 3. Determine whether your chair is a furniture.

Ans-- isa(your_chair, X),ako(X,Y).

output--

X = chair Y = furniture ? ;

X = chair Y = seat

yes

4. Determine whether your chair belongs to a person.

Ans-- belongs_to(X,you),isa(you,Y).

output--

X = your_chair Y = person

yes

*/

Ques.2-Verifies if 3 numbers can be the sides of a triangle

Facts and Rules:-

start:- write('input a= '),read(A), write('input b= '),read(B), write('input c= '),read(C), A >= 0,B>= 0,C >= 0, /* must be positive */ A < B+C,B< C+A,C < A+B, write('These numbers are the sides of a triangle.').

Queries :-

1. | ?- start. input a= 3. input b= 4. input c= 5. These numbers are the edges of a triangle.

(15 ms) yes

2. | ?- start. input a= 18.

input b= 34. input c= 23. These numbers are the edges of a triangle.

yes

3. | ?- start. input a= 12. input b= 13. input c= 14. These numbers are the edges of a triangle.

yes

Ques3.-Problem of likes and not likes.

Facts:-

likes(john, susie). likes(X, susie). likes(john, Y). likes(john, Y), likes(Y, john).

/* John likes Susie */ /* Everyone likes Susie */ /* John likes everybody */

/* John likes everybody and everybody likes John */

likes(john, susie); likes(john,mary). /* John likes Susie or John likes Mary */

not(likes(john,pizza)).

/* John does not like pizza */

Rules :likes(john,susie) :- likes(john,mary). /* John likes Susie if John likes Mary*/ friends(X,Y) :- likes(X,Y),likes(Y,X). hates(X,Y) :- not(likes(X,Y)). /* X and Y are friends if they like each other */ /* X hates Y if X does not like Y*/

enemies(X,Y) :- not(likes(X,Y)),not(likes(Y,X)). /* X and Y are enemies if they don't like each other */

Queries(with output):-

1. | ?- hates(john,Y).

Y = pizza

yes

2.?- friends(john,susie).

no

3. | ?- enemies(john,marry).

no

4. | ?- friends(john,marry).

no

5. | ?- likes(X,Y).

X = john Y = susie ?

(15 ms) yes

Ques4.

/* Facts---- */

animal(mammal, tiger, carnivore, stripes). animal(mammal, lion, carnivore, mane). animal(mammal, hyena, carnivore, ugly). animal(mammal, zebra, herbivore, stripes).

animal(bird, eagle, carnivore, large). animal(bird, sparrow, scavenger, small).

animal(reptile, snake, carnivore, long). animal(reptile, lizard, scavenger, small).

/*Rules*/ animal_name(X):-animal(A,X,B,C). animal_name(X,Y):-animal(Y,X,B,C). animal_name(X,Y):-animal(A,X,C,Y). animal_name(X,Y):-animal(A,X,Y,C).

/*

Queries---

1. Add a rule that writes a list of all the animal names.

2. list all animal name which is small.

3. list all animal name which is mammal.

4. list all animal which is bird.

5. List all animal which is carnivore.

6. find the name of animal which is carnivore as well as ugly.

Solutions---

1. Add a rule that writes a list of all the animal names.

Ans.-- animal_name(X).

output--

X = tiger ? ;

X = lion ? ;

X = hyena ? ;

X = zebra ? ;

X = eagle ? ;

X = sparrow ? ;

X = snake ? ;

X = lizard

2. list all animal name which is small.

Ans.-- animal_name(X,small).

output--

X = sparrow ? ;

X = lizard ? ;

no

3. list all animal name which is mammal.

Ans.-- animal_name(X,mammal).

output--

X = tiger ? ;

X = lion ? ;

X = hyena ? ;

X = zebra ? ;

(16 ms) no

4. list all animal which is bird.

Ans.-- animal_name(X,bird).

output--

X = eagle ? ;

X = sparrow ? ;

no

5. List all animal which is carnivore.

Ans.-- animal_name(X,carnivore).

X = tiger ? ;

output--

X = lion ? ;

X = hyena ? ;

X = eagle ? ;

X = snake ? ;

(16 ms) no

6. find the name of animal which is carnivore as well as ugly.

Ans.-- animal(X,Y,carnivore,ugly).

output--

X = mammal Y = hyena ? ;

no

*/

/*Ques5:-"Write a prolog program to add two number?".*/

/*Facts and Rules*/

start:-sum,n1. sum:- write('Enter value of X= '),read(X), write('Enter value of Y= '),read(Y), S is X+Y, write('Sum is '),write(S).

/*queries*/

/*| ?- start.

Enter value of X=50. Enter value of Y=50. Sum is 100

| ?- start.

Enter value of X=5. Enter value of Y=10. Sum is 15

| ?- start.

Enter value of X=2.5. Enter value of Y=3.2.

Sum is 5.7 */

Ques6.-Program to find power of the number.

Facts and Rules :-

power(N,0,1):- !. power(N,K,R):- K1 is K-1,power(N,K1,R1),R is R1*N.

Query :1.

| ?- power(2,3,R).

R=8

yes 2.

| ?- power(3,3,R).

R = 27

yes

3. | ?- power(4,3,R).

R = 64

Yes

Ques7.-Program to find factorial of a given number.

Facts and Rules :-

fact(0,1). fact(N,R):- fact(N1,R1),N is N1+1,R is R1*N.

Query:1. | ?- fact(4,R).

R = 24 ?

yes

2. | ?- fact(5,R).

R = 120 ?

yes

3. | ?- fact(3,R).

R=6?

yes | ?-

Ques8.-Family problem.

Facts:-

father_of(joe,paul). father_of(joe,mary). father_of(joe,hope). mother_of(jane,paul). mother_of(jane,mary). mother_of(jane,hope).

male(paul). male(joe). male(ralph). male(X) :- father_of(X,Y).

female(mary). female(jane). female(hope).

Rules:-

son_of(X,Y) :- father_of(Y,X),male(X). son_of(X,Y) :- mother_of(Y,X),male(X).

daughter_of(X,Y) :- father_of(Y,X),female(X). daughter_of(X,Y) :- mother_of(Y,X),female(X).

sibling_of(X,Y) :- !,father_of(Z,X),father_of(Z,Y),X\=Y. sibling_of(X,Y) :- !,mother_of(Z,X),mother_of(Z,Y),X\=Y.

Queries :-

1. father_of(X,paul).

X = joe ?

yes

2. | ?sibling_of(X,paul).

X = mary ?

yes

3. | ?- daughter_of(X,Y).

X = mary Y = joe ?

Yes

Ques9.Program to to check planet and satellite with the following facts.

Facts :-

star(sun). orbit(earth, sun). orbit(moon, earth). orbit(saturn, sun). orbit(jupiter, sun). orbit(ioa, jupiter). orbit(casini, saturn). orbit(titan, saturn).

Rules :-

planet(X) :- orbit(X, Y), star(Y).

satellite(X) :- orbit(X, Y), planet(Y).

Queries:-

1.

| ?- orbit(X,Y). X = earth Y = sun ? yes 2. | ?- planet(earth).

yes

3. | ?- satellite(casini). Yes

Ques10. An example using lists to find length of a list:

Facts &Rules :-

size([],0). size([H|T],N) :- size(T,N1), N is N1+1. % or size([_|T],N) :- size(T,N1), N is N1+1.

Queries :-

1.

| ?- size([1,2,3,4],N).

N=4

yes 2.

| ?- size([bill,ted,ming,pascal,nat,ron],N).

N=6

yes

3.

| ?- size([a, [b, c, d], e, [f | g], h], N).

N=5

yes

You might also like