Программирование на языке Пролог для искусственного интеллекта | страница 61
• Значения арифметических выражений можно сравнивать с помощью таких операторов, как ><
, >=<
и т.д. Эти операторы вычисляют значения своих аргументов.
3.16. Определите отношение
>mах( X, Y, Мах)
так, чтобы >Мах
равнялось наибольшому из двух чисел X и Y.
3.17. Определите предикат
>максспис( Список, Мах)
так, чтобы >Мах
равнялось наибольшему из чисел, входящих в >Список
.
3.18. Определите предикат
>сумспис( Список, Сумма)
так, чтобы >Сумма
равнялось сумме чисел, входящих в >Список
.
3.19. Определите предикат
>упорядоченный( Список)
который принимает значение истина, если >Список
представляет собой упорядоченный список чисел. Например: >упорядоченный [1, 5, 6, 6, 9, 12] )
.
3.20. Определите предикат
>подсумма( Множ, Сумма, ПодМнож)
где >Множ
это список чисел, >Подмнож
подмножество этих чисел, а сумма чисел из >ПодМнож
равна >Сумма
. Например:
>?- подсумма( [1, 2, 5, 3, 2], 5, ПМ).
>ПМ = [1, 2, 2];
>ПМ = [2, 3];
>ПМ = [5];
>...
3.21. Определите процедуру
>между( N1, N2, X)
которая, с помощью перебора, порождает все целые числа X, отвечающие условию N1≤X≤N2.
3.22. Определите операторы 'если', 'то', 'иначе' и ':=" таким образом, чтобы следующее выражение стало правильным термом:
>если X > Y то Z := X иначе Z := Y
Выберите приоритеты так, чтобы 'если' стал главным функтором. Затем определите отношение 'если' так, чтобы оно стало как бы маленьким интерпретатором выражений типа 'если-то-иначе'. Например, такого
>если Вел1 > Вел2 то Перем := Вел3
>иначе Перем := Вел4
где >Вел1
, >Вел2
, >Вел3
и >Вел4
— числовые величины (или переменные, конкретизированные числами), а >Перем
— переменная. Смысл отношения 'если' таков: если значение >Вел1
больше значения >Вел2
, тогда >Перем
конкретизируется значением >Вел3
, в противном случае — значением >Вел4
. Приведем пример использования такого интерпретатора:
>?- X = 2, Y = 3,
> Вел2 is 2*X,
> Вел4 is 4*X,
> Если Y > Вел2 то Z := Y иначе Z := Вел4.
> Если Z > 5 то W := 1 иначе W :=0.
>X = 2
>Y = 3
>Z = 8
>W = 1
>Вел2 = 4
>Вел4 = 8
Резюме
• Список — часто используемая структура. Он либо пуст, либо состоит из головы и хвоста, который в свою очередь также является списком. Для списков в Прологе имеется специальная нотация.
• В данной главе рассмотрены следующие операции над списками: принадлежность к списку, конкатенация, добавление элемента, удаление элемента, удаление подсписка.
• Операторная запись позволяет программисту приспособить синтаксис программ к своим конкретным нуждам. С помощью операторов можно значительно повысить наглядность программ.