р( 3).

Напишите все ответы пролог-системы на следующие вопросы:

    (a)        ?-  р( X).

    (b)        ?-  р( X),   p(Y).

    (c)        ?-  р( X),   !,  p(Y).

Посмотреть ответ

5. 2.    Следующие отношения распределяют числа на три класса - положительные, нуль и отрицательные:

        класс( Число, положительные) :- Число > 0.

        класс( 0, нуль).

        класс( Число, отрицательные) :- Число < 0.

Сделайте эту процедуру более эффективной при помощи отсечений.

Посмотреть ответ

5. 3.    Определите процедуру

        разбить( Числа, Положительные, Отрицательные)

которая разбивает список чисел на два списка: список, содержащий положительные числа (и нуль), и список отрицательных чисел. Например,

        разбить( [3, -1, 0, 5, -2], [3, 0, 5], [-1, -2] )

Предложите две версии: одну с отсечением, другую - без.

Посмотреть ответ

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

5. 3.    Отрицание как неуспех

'Мэри любит всех животных, кроме змей'. Как выразить это на Прологе? Одну часть этого утверждения выразить легко: 'Мэри любит всякого X, если Х - животное'. На Прологе это записывается так:

        любит( мэри, X) :- животное ( X).

Но нужно исключить змей. Это можно сделать, использовав другую формулировку:

        Если Х - змея, то 'Мэри любит X' - не есть

              истина,

        иначе, если Х - животное, то Мэри любит X

.

Сказать на Прологе, что что-то не есть истина, можно при помощи специальной цели fail (неуспех), которая всегда терпит неудачу, заставляя потерпеть неудачу и ту цель, которая является ее родителем. Вышеуказанная формулировка, переведенная на Пролог с использованием fail, выглядит так:

        любит( мэри, X) :-

                змея( X),  !,  fail.

        любит( Мэри, X) :-

                животное ( X).

Здесь первое правило позаботится о змеях: если Х - змея, то отсечение предотвратит перебор (исключая таким образом второе правило из рассмотрения), а fail вызовет неуспех. Эти два предложения можно более компактно записать в виде одного:

        любит( мэри, X) :-

               

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату