Задание 2.
Разберите представленную программу для службы знакомств. Она содержит внутреннюю цель для выбора Кати партнера высокого роста, блондина, имеющего спортивный автомобиль. Наберите программу и внесите в нее изменения с учетом ваших вкусов для всех возможных ваpиантов выбоpа партнера. Переделайте программу для поиска партнерши для мужчины.
/* Программа "Служба знакомств"*/
/* Работа с правилами. Цель внутренняя/внешняя.*/
/* Связки: ":-" и ",". Секция domains.*/
domains
man = symbol
predicates
choice(man) /* выбор */
short(man /* short-низкий, tall-высокий */
tall(man)
black(man) /* black-брюнет, blond-блондин */
blond(man)
old(man) /* old-старое, sport-спортивное авто */
sport(man)
katry(man) /* выбор Кати */
who_is_the_choice /* Имя предиката из нескольких слов.*/
/* Пробелы заменяются символами связки "_". */
clauses
/* факты */
choice("Костя"). /* Обратите внимание, что предикаты */
choice("Леонид"). /* одного типа (с одним именем и */
choice("Павел"). /* одинаковой арности) записываются */
short("Леонид"). /* в программе всегда в одной группе*/
short("Павел").
tall("Костя").
black("Павел").
black("Леонид").
blond("Костя").
old("Леонид").
old("Павел").
sport("Костя").
/* правила */
who_is_the_choice :-
katry(Choice),
write("Кандидат для Кати - ",Choice,"."),nl.
katry(Choice) :-
choice(Choice),
tall(Choice),
blond(Choice),
sport(Choice).
goal
who_is_the_choice.
Задание 3. Создайте программу, описывающую Ваши родственные отношения, используя фрагмент программы приведенный ниже. Перед написанием программы нарисуйте дерево родственных отношений своей семьи и пользуйтесь им для записи фактов в программу. Поработайте с программой и определите родственные отношения в семье в соответствии с индивидуальным заданием.
predicates
male (symbol) /* мужчина */
female (symbol) /* женщина*/
father(symbol, symbol) /* отец */
mother (symbol,symbol) /* мать */
parent (symbol,symbol) /* родитель */
syster (symbol,symbol) /* сестра */
brother (symbol,symbol) /* брат */
gra ndfather (symbol,symbol) /* дедушка */
grandmother (symbol,symbol) /* бабушка */
clauses
/* факты */
male("Алексей"). /* мужчины */
…
female("Лена"). /* женщины */
…
mother("Ольга","Лена"). /* ребенок-мать */
…
father("Алексей","Борис"). /* ребенок-отец */
…
/* правила */
parent(X,Y) if mother(X,Y). /* Y-родитель X, если она мать X */
parent(X,Y) if father(X,Y). /* Y-родитель X, если он отец X */
brother(X,Y) if /* Y бpат X, если Y-мужчина, у них */
male(Y) and /* общий родитель и они не одно лицо. */
parent(X,P) and
parent(Y,P) and
X<>Y.
…
grandfather(X,G) if /* G-дедушка X, если он-отец матери X.*/
father(P,G) and
mother(X,P).
…
grandmother(X,B) if /* B-бабушка X, если она-мама матери X.*/
mother(X,A) and
mother(A,B).
…
goal
write("Ребенок: "),male(Z),write(Z),nl,
write("Мама ",Z," -это "),nl,mother(Z,X),write(X),nl,
write("Бабушка ",Z," - это "),nl,grandmother(Z,B),write(B),nl.