Приклад розробки програми

Завдання:

Написати Пролог-Програму, що складається із правила, зазначеного в індивідуальному завданні, і представленої у вигляді фактів інформації, необхідної для одержання відповідей на запити до цього правила.

Індивідуальне завдання:

два чоловіки можуть спілкуватися між собою, якщо вони володіють тим самим мовою.

Задане правило можна інтерпретувати в такий спосіб:

два чоловіки можуть спілкуватися між собою, якщо

перша людина володіє деякою мовою І

друга людина володіє тією ж мовою І

перша й друга людина не є однією особою.

Остання підціль необхідна тому, що при запиті оба співрозмовника можуть конкретизуватися тим самим значенням. На Пролозі це правило представлене contact/2 у програмі 1.3.

Крім цього, необхідно для кожної людини, що має бесіду із співрозмовником, надати інформацію про мову, якою він володіє. Для цієї мети в тій же програмі створена явна частина БД language/2.

% Програма 1.3

% мова, якою володіє людина

% 1 - ім'я людини

% 2 - мова, якою він володіє

language(adolf,germ).

language(john,engl).

language (bob,engl).

language(tom,engl).

language(ivan,rush).

language(serg,rush).

% правило,що встановлює співрозмовників

% 1 - ім'я першого співрозмовника

% 2 - ім'я другого співрозмовника

contact(X,Y):-

language(X, Slang),

language(Y, Slang),

X \= Y.

Запити до програми 1.3:

?- contact(bob,Z).

Z = john ->;

Z = tom ->;

no

Запит: “З ким може спілкуватися Боб?”

Відповідь: “Із Джоном”.

Альтернативна відповідь: “З Томом”.

Запит неуспішний: “Ніяких інших варіантів ні”.

?- contact(A,B).

А = john

В = bob ->;

A = john

В = torn ->;

A = bob

В = john ->;

A = bob

В = torn ->;

A = torn

В = john ->;

A = torn

В = bob ->;

A = ivan

В = serg ->;

A = serg

В = ivan ->;

no

Запит: “Які два чоловіки можуть спілкуватися між собою?”

Відповідь: “Джон з Бобом”.

Альтернативна відповідь: “Джон з Томом”.

Альтернативна відповідь: “Боб із Джоном”.

Альтернативна відповідь: “Боб з Томом”.

Альтернативна відповідь: “Том із Джоном”.

Альтернативна відповідь: “Том з Бобом”.

Альтернативна відповідь: “Іван із Сержем”.

Альтернативна відповідь: “Серж із Іваном”.

Запит неуспішний: “Ніяких інших варіантів немає”.

?- language(X,rush).

X = ivan ->;

X = serg ->;

no

Запит: “Хто володіє російською мовою?”

Відповідь: “Іван”.

Альтернативна відповідь: “Серж”.

Запит неуспішний: “Ніяких інших варіантів немає”.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: