Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы с ответами ЯП.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
231.17 Кб
Скачать

24) Применение пролог для решения логических задач

Пример 1. Беседует трое друзей: Белокуров, Рыжов, Чернов. Брюнет сказал Белокурову: “Любопытно, что один из нас блондин, другой брюнет, третий - рыжий, но ни у кого цвет волос не соответствует фамилии”. Какой цвет волос у каждого из друзей?

Для решения построим вспомогательную таблицу:

Таблица 8.

Вспомогательная таблица соответствия

Цвет Фамилия

Белокуров

Рыжов

Чернов

блондин

-

рыжий

-

брюнет

-

-

Выводы:

    1. Белокуров не брюнет и не блондин;

    2. Чернов не черный, цвет волос Чернова и Белокурова не совпадают;

    3. Рыжов не рыжий, цвет волос у Рыжова и Белокурова, Рыжова и Чернова не совпадают.

Программа 23. Логическая задача на соответствие

Predicates

fam(symbol)

color(symbol)

cootvet(symbol, symbol)

Clauses

fam(belokurov).

fam(ryzov).

fam(chernov).

color(ryziy).

color(cherniy).

color(beliy).

cootvet(X,Y):- fam(X), color(Y), X=belokurov,

not(Y=cherniy), not(Y=beliy).

cootvet(X,Y):- fam(X), color(Y), X= chernov,

not(Y=cherniy),not(cootvet(belokurov,Y).

cootvet(X,Y):- fam(X), color(Y), X= ryzov,

not(cootvet(belokurov, Y), not(cootvet(chernov, Y).

Пример 2. На скамейке сидели Петя, Боря, Коля. Петя справа от Бори, Боря справа от Коли. Кто сидел посередине? Кто сидел с правого(левого) края? Кто сидел между указанными объектами(увеличьте число объектов)?

Программа 24. Логическая задача на выяснение порядка

Predicates

rayd(symbol, symbol, symbol)

sprava(symbol, symbol)

seredina(symbol

kr_cl(symbol)

kr_cpr(symbol)

Clauses

sprava(kolya, boray). /*Справа от Коли Боря*/

sprava(boray, petay).

rayd(X,Y,Z):- sprava(X,Y), sprava(Y, Z).

seredina(X):- rayd(_,X,_).

kr_cl(X):- rayd(X,_,_).

kr_cpr(X):- rayd(_,_,X).