(Для всех вариантов)
1. Создать запрос в соответствии с вариантом к следующему набору фактов на языке Пролог-Д:
рейс(Челябинск,Анталья,Ту154).рейс(Челябинск,Хургада,А310).
рейс(Челябинск,Москва,Б737).рейс(Екатеринбург,Лондон,Б757).
рейс(Екатеринбург,Гамбург,А310).рейс(Екатеринбург,Москва,Ил96).
рейс(Екатеринбург,Хургада,А310).рейс(Москва,Анталья,Б737).
рейс(Москва,Хабаровск,Ту204).рейс(Москва,СПб,Ан148).
аэропорт(Челябинск,Баландино).аэропорт(Екатеринбург,Кольцово).
аэропорт(Москва,Внуково).аэропорт(СПб,Пулково).аэропорт(Лондон,Хитроу).
2. Составить программу на языке Пролог-Д для решения заданной в варианте задачи с использованием набора фактов о ценах:
товар(масло,32).товар(хлеб,14).товар(молоко,23).товар(рис,26).товар(мыло,15).
товар(творог,26).товар(кефир,14).товар(соль,9).
Варианты заданий контрольной работы
1 вариант
1. Какие самолёты летают в Анталью?
2. Составить правило «товары» для упорядочения заданного списка товаров по возрастанию цены, например:
?товары([рис,хлеб,молоко,мыло],A).
А=[хлеб,мыло,молоко,рис]
2 вариант
1. Какие самолёты летают из Москвы?
2. Составить правило «сумма» для подсчета стоимости заданного списка товаров, например:
?сумма([рис,хлеб,молоко,мыло],с).
с=78
3 вариант
1. Из каких аэропортов летают самолёты Б737?
2. Составить правило поиска в заданном списке товаров самого дешёвого, например:
?дешёвый([рис,хлеб,молоко,мыло],д).
д=хлеб
4 вариант
1. В какие города летают самолёты А310?
2. Составить правило поиска в заданном списке товаров самого дорогого, например:
?дорогой([рис,хлеб,молоко,мыло],д).
д=рис
5 вариант
1. Между какими городами летает Ту204?
2. Составить правило поиска пар товаров с одинаковыми ценами, например:
?пара(а,б).
а=хлеб а=рис
б=кефир б=творог
6 вариант
1. В какие города летают А310 из Екатеринбурга?
2. Составить правило отбора из заданного списка тех товаров, цены которых не превышают заданную величину, например:
?отбор([мыло,масло,кефир,творог,соль],15,А).
А=[мыло,кефир,соль]
7 вариант
1. Какие аэропорты принимают самолёты Б737?
2. Составить правило отбора из заданного списка тех товаров, цены которых не превышают цену первого в списке, например:
?отбор([мыло,масло,кефир,творог,соль],А).
А=[мыло,кефир,соль]
8 вариант
1. Какие самолёты можно увидеть во Внукове?
2. Составить правило поиска цены самого дорогого товара из заданных в списке, например:
?дорогой([рис,хлеб,молоко,мыло],д).
д=26
9 вариант
1. Между какими аэропортами летает Ан148?
2. Составить правило поиска цены самого дешёвого товара из заданных в списке, например:
?дешёвый([рис,хлеб,молоко,мыло],д).
д=14
10 вариант
1. Из каких аэропортов есть рейсы в Хургаду?
2. Составить правило поиска таких троек, где вместо одного товара можно купить два других за ту же сумму, например:
?товары(а,б,в).
а=молоко б=кефир в=соль
Пример выполнения задания контрольной работы
0 вариант
-
В какие города летают самолеты из аэропорта Внуково?
-
Составить правило вычисления количества товаров, которые по карману владельцу суммы в 20 рублей, если покупается только один товар из возможных, заданных списком, например:
?сколько ([рис,хлеб,молоко,мыло],20,к).
к=2
Решение
-
В какие города летают самолеты из аэропорта Внуково?
Запрос может состоять из двух частей:
Во-первых: к какому городу «г» относится аэропорт Внуково?
?аэропорт(г,Внуково).
г=Москва
Во-вторых: в какие города «д» летают самолёты из Москвы? При этом тип самолёта не важен, маскируем его анонимной переменной «_».
?рейс(Москва,д,_).
д=Анталья
д=Хабаровск
д=СПб
Составной запрос выглядит так: в какие города «д» есть рейсы из города «г», к которому относится аэропорт Внуково?
рейс(Челябинск,Анталья,Ту154).рейс(Челябинск,Хургада,А310).
рейс(Челябинск,Москва,Б737).рейс(Екатеринбург,Лондон,Б757).
рейс(Екатеринбург,Гамбург,А310).рейс(Екатеринбург,Москва,Ил96).
рейс(Екатеринбург,Хургада,А310).рейс(Москва,Анталья,Б737).
рейс(Москва,Хабаровск,Ту204).рейс(Москва,СПб,Ан148).
аэропорт(Челябинск,Баландино).аэропорт(Екатеринбург,Кольцово).
аэропорт(Москва,Внуково).аэропорт(СПб,Пулково).
аэропорт(Лондон,Хитроу).
?аэропорт(г,Внуково),рейс(г,д,_).
г=Москва
д=Анталья
д=Хабаровск
д=СПб
-
Составить правило вычисления количества товаров, которые по карману владельцу суммы в 20 рублей, если покупается только один товар из возможных, заданных списком, например:
?сколько ([рис,хлеб,молоко,мыло],20,к).
к=2
Во-первых, из пустого списка можно выбрать 0 товаров при любой сумме в кармане:
сколько([],_,0).
Во-вторых, если товар «а» в голове списка нам по карману (его цена «ц» не превышает располагаемую сумму «с»), то здесь нужно поставить отсечение «!», исключающее переход к другому варианту (где товар нам не по карману), затем нужно подсчитать количество доступных товаров «н» в хвосте списка «Б» и, увеличив «н» на единицу, получить искомое количество «к».
сколько([а|Б],с,к):-товар(а,ц),НЕ(БОЛЬШЕ(ц,с)),!,
сколько(Б,с,н),СЛОЖЕНИЕ(н,1,к).
Наконец, последняя, третья альтернатива правила «сколько» будет выбрана только в том случае, если разбор второй альтернативы не дошёл до отсечения, а это значит, что головной элемент списка нам не по карману, или его цена неизвестна, и количество доступных товаров в списке равно количеству доступных товаров в хвосте списка:
сколько([_|Б],с,к):-сколько(Б,с,к).
Целиком программа выглядит так:
товар(масло,32).товар(хлеб,14).товар(молоко,23).товар(рис,26).
товар(мыло,15).товар(творог,26).товар(кефир,14).товар(соль,9).
сколько([],_,0).
сколько([а|Б],с,к):-товар(а,ц),НЕ(БОЛЬШЕ(ц,с)),!,
сколько(Б,с,н),СЛОЖЕНИЕ(н,1,к).
сколько([_|Б],с,к):-сколько(Б,с,к).
?сколько ([рис,хлеб,коньяк,мыло,масло,творог,кефир,соль],25,к).
к=4