Завдання:
Написати Пролог-Програму, що складається із правила, зазначеного в індивідуальному завданні, і представленої у вигляді фактів інформації, необхідної для одержання відповідей на запити до цього правила.
Індивідуальне завдання:
два чоловіки можуть спілкуватися між собою, якщо вони володіють тим самим мовою.
Задане правило можна інтерпретувати в такий спосіб:
два чоловіки можуть спілкуватися між собою, якщо
перша людина володіє деякою мовою І
друга людина володіє тією ж мовою І
перша й друга людина не є однією особою.
Остання підціль необхідна тому, що при запиті оба співрозмовника можуть конкретизуватися тим самим значенням. На Пролозі це правило представлене 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
Запит: “Хто володіє російською мовою?”
Відповідь: “Іван”.
Альтернативна відповідь: “Серж”.
Запит неуспішний: “Ніяких інших варіантів немає”.