Методології програмування. Основні методології, страница 5

     brother(X,Y):-male(Y),parent(X,P), parent(Y,P),X<>Y.

     sister(X,Y):-female(Y),parent(X,P),parent(Y,P),X<>Y.

     grandfather(X,G):-father(P,G),mother(X,P).

     grandfather(X,G):-father(X,P),father(P,G).

Варіанти розв’язків:

goal: brother(alan,ivan)             No

goal: grandfather(marilyn,I)       I=charles   I=bob   2 solutions

Програма 2  Перевірка наявності маршруту для шахматного коня на дошці 3 × 3 з полями:

a1, a2, a3,

a4, a5, a6,

a7, a8,  a9.

predicates

   been(symbol)

   move(symbol,symbol)

   path(symbol,symbol)

clauses 

   been(a3).

   move(a1,a6).move(a3,a4).move(a6,a7).move(a8,a3).

   move(a1,a8).move(a3,a8).move(a6,a1).move(a8,a1).

   move(a2,a7).move(a4,a3).move(a7,a6).move(a9,a4).

   move(a2,a9).move(a4,a9).move(a7,a2).move(a9,a2).

   path(Z,Z).

   path(X,Y) :- move(X,W), not(been(W)),

    assert(been(W)), path(W,Y).

Приклад виконання завдання.Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: трикутник A  має кути – 30, 60, 90,

  трикутник B  має кути – 20, 80, 80.

Правило: трикутникє рівнобедреним, якщо два його кути однакові.

Мета: чи є трикутники  A  і B  рівнобедреними ?

Запис правил і фактів мовою Пролог може мати вигляд:

predicates

            tre (symbol, integer, integer, integer)

            rb (symbol)

clauses

            tre (a, 30, 60, 90).

            tre (b, 20, 80, 80).

            rb (V) :- tre (V, X, Y, _), X=Y .

            rb (V) :- tre (V, _, Y, Z),  Y=Z .

            rb (V) :- tre (V, X, _, Z), X=Z .

            Цілі записуються у вигляді  rb(a),  rb(b).

Завдання до розділу 6

1 Мовою Lisp описати і застосувати функцію, що обчислює один з коренів квадратного рівняння.

2 Мовою Lisp описати і застосувати функцію, що обчислює площу трикутника за відомими довжинами сторін.

3 Мовою Lisp описати і застосувати функцію, що обчислює площу трапеції за відомими основами і висотою.

4 Мовою Lisp описати і застосувати функцію, що обчислює площу круга за відомим діаметром.

5 Мовою Lisp описати і застосувати функцію, що обчислює площу круга за відомим радіусом.

6 Мовою Lisp описати і застосувати функцію, що обчислює об’єм кулі за відомим радіусом.    

7 Мовою Lisp описати і застосувати функцію, що обчислює відстань від довільної точки на площині до точки з координатами (2,3).

8  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: a  - син b;

b - син c.

Правило: x - онук z, якщо x - син y і y – син z.

Мета: чи є a онуком c?

9  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факт: a  - чоловік b.

Правило: x - дружина y, якщо y – чоловік x.

Мета: чи є bдружиною a?

10  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: a  – позитивне;

            b – негативне.

Правило: добуток xyпозитивний, якщо xі y – обоє позитивні або обоє негативні.

Мета: чи є ab позитивним ?

11  Мовою Prolog написати програму з такими правилами і цілями:

Правило: добуток xy позитивний, якщо x>0, y>0 або  x<0,  y<0.

Мета: чи є добуток (-1) і (-5) позитивним ?

12  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: a  – поле класу c ;

 b – метод класу d.

Правило: x – є членом класу y, якщо x – поле y або x – метод y.

Мета: чи є a членом класу d?

13  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: трикутник A  має кути – 60, 60, 60;

  трикутник  B  має кути – 45, 45, 90.

Правило: трикутникє прямокутним, якщо один з його кутів дорівнює 90 градусам.

Мета: чи є трикутники  A  і B  прямокутними ?

14  Мовою Prolog написати програму з такими фактами, правилами і цілями:

Факти: трикутник A  має кути – 60, 60, 60;

  трикутник  B  має кути – 45, 45, 90.

Правило: трикутникє рівностороннім, якщо всі кути рівні.

Мета: чи є трикутники  A  і B  рівносторонніми ?