Логическое программирование на Prolog

Автор работы: Пользователь скрыл имя, 27 Октября 2013 в 22:47, контрольная работа

Краткое описание

Бимба умеет летать, но не умеет прыгать. Кузля умеет прыгать, но не умеет плавать. Мафик умеет плавать, но не умеет бегать. Лямзик умеет бегать, но не умеет ползать. Ромусик умеет ползать и прыгать. Бумсик умеет прыгать и летать. Мультяшка — супергерой, если он умеет летать или бегать. Мультяшка — бумерок, если он умеет ползать или плавать.

Прикрепленные файлы: 1 файл

лабораторная работа 5.doc

— 62.00 Кб (Скачать документ)

Логическое программирование на Prolog

 

Задание 1. Запрограммировать утверждения.

 

Бимба умеет летать, но не умеет прыгать. Кузля умеет  прыгать, но не умеет плавать. Мафик умеет плавать, но не умеет бегать. Лямзик умеет бегать, но не умеет ползать. Ромусик умеет ползать и прыгать. Бумсик умеет прыгать и летать. Мультяшка — супергерой, если он умеет летать или бегать. Мультяшка — бумерок, если он умеет ползать или плавать.

 

      domains

        name=string

     predicates

действие(name,name)

мультяшка_супергерой(string)

мультяшка_бумерок(string)

    

     clauses

       действие("Бимба","летает").

      действие("Бумсик","летает").

       действие("Кузля","прыгает").

       действие("Ромусик","прыгает").

       действие("Бумсик","прыгает").  

       действие("Мафик","плавает").

       действие("Лямзик","бегает").

       действие("Ромусик","ползает").

            

       мультяшка_супергерой(X):-действие(X,"летает")or действие(X,"бегает"). 

         мультяшка_бумерок(X) :- действие(X,"ползает")or действие(X,"плавает").

           

     goal       

       мультяшка_супергерой(Мультяшка_супергерой) or

        мультяшка_бумерок(Mультяшка_бумерок).

 

Ответ системы:

 

 

Задание 2. На основании сформулированного вопроса постройте факты и правила.

 

Какие живые существа имеют четыре ноги с копытами?

Факты:

Четыре_ноги (“Кошка”).

Четыре_ноги (“Собака”).

Четыре_ноги (“Корова”).

Четыре_ноги (“Лиса”).

Четыре_ноги (“Кабан”).

Четыре_ноги (“Козел”).

Четыре_ноги (“Лошадь”).

Копыта (“Корова”).

Копыта (“Кабан”).

Копыта (“Козел”).

Копыта (“Лошадь”).

Нет_копыт (“Кошка”).

Нет_копыт (“Собака”).

Нет_копыт (“Лиса”).


Правила:

Живые существа с четырьмя ногами и с копытами. (Живые существа (Х) if четыре_ноги (Х), копыта (Х)).

Живые существа с четырьмя ногами. (Живые существа (Х) if четыре_ноги (Х)).

Живые существа с копытами. (Живые существа (Х) if копыта (Х)).

Живые существа с четырьмя ногами и без копыт. (Живые существа (Х) if четыре_ноги (Х), нет_копыт (Х)).

 

Живые существа без копыт. (Живые существа (Х) if нет_копыт (Х)).

 

У каких есть перья, все  ли из них умеют летать?

Факты:

Перья (“Голубь”).

Перья (“Попугай”).

Перья (“Пингвин”).

Перья (“Страус”).

Летает (“Голубь”).

Летает (“Попугай”).

Не_летает (“Пингвин”).

Не_летает (“Страус”).


Правила:

Живые существа летают и с перьями. ( Живые существа (Х) if летает (Х), перья (Х)).

Живые существа с перьями. ( Живые существа (Х) if перья (Х)).

Живые существа летают. ( Живые существа (Х) if летает (Х)).

Живые существа не летают. ( Живые существа (Х) if не_летает (Х)).

Живые существа с перьями и не летают. ( Живые существа (Х) if не_летает (Х), перья (Х)).

 

      domains

        name=string

     predicates

       существо(name,name,name)

       четыре_ноги_копыта(name)      

       перья_летает(name)      

 

     clauses

      существо("Кошка","четыре ноги","нет копыт").

       существо("Собака","четыре  ноги","нет копыт").

       существо("Корова","четыре  ноги","копыта").

       существо("Лиса","четыре  ноги","нет копыт").

       существо("Кабан","четыре  ноги","копыта").

      существо("Козел","четыре ноги","копыта").

       существо("Лошадь","четыре  ноги","копыта").

       существо("Голубь","перья","летает").

       существо("Попугай","перья","летает").

       существо("Пингвин","перья","не  летает").

       существо("Страус","перья","не летает").

     

       четыре_ноги_копыта(X):-существо(X,"четыре  ноги","копыта").

       перья_летает(X):-существо(X,"перья","летает").

    

       goal    четыре_ноги_копыта(X) or перья_летает(X) .

 

Ответ системы:

 

 

Задание 3. Запрограммируйте на языке Prolog мир, описанный в отрывках стихотворений. Придумайте несколько вопросов.

 

«Круглый год».

Апрель, апрель!

На дворе звенит капель.

По полям бегут ручьи,

На дорогах лужи,

Скоро выйдут муравьи

После зимней стужи.

Пробирается медведь

Сквозь лесной валежник.

Стали птицы песни петь,

И расцвел подснежник.

(С.Я.Маршак)

 

      domains

        name=string

     predicates

        природа(name,name)

  

     clauses

      природа("Капель","звенит").

      природа("Ручьи","бегут").

      природа("Лужи","на дорогах").

      природа("Муравьи","выйдут ").

      природа("Медведь","пробирается").

      природа("Птицы","поют").

      природа("Подснежник","расцвел").

 

Что делает медведь?

goal природа("Медведь",X).

Ответ:

X=пробирается

1 Solution

 

Кто поет?

goal природа(X, "поют").

Ответ:

X=Птицы

1 Solution

 

 

 


Информация о работе Логическое программирование на Prolog