Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы ИИ.doc
Скачиваний:
18
Добавлен:
09.11.2018
Размер:
166.91 Кб
Скачать

Задания

1.    (а)    Используя отношение конк, напишите цель, соответствующую вычеркиванию трех последних элементов списка L, результат - новый список L1. Указание: L - конкатенация L1 и трехэлементного списка.

(b)    Напишите последовательность целей для порождения списка L2, получающегося из списка L вычеркиванием его трех первых и трех последних элементов.

2.    Определите отношение

        последний( Элемент, Список)

так, чтобы Элемент являлся последним элементом списка Список. Напишите два варианта определения:    (а)    с использованием отношения конк,     (b)    без использования этого отношения.

3.    Определите два предиката

        четнаядлина( Список)    и    нечетнаядлина( Список)

таким образом, чтобы они были истинными, если их аргументом является список четной или нечетной длины соответственно. Например, список [а, b, с, d] имеет четную длину, a [a, b, c] - нечетную.

4.    Определите отношение

        обращение( Список, ОбращенныйСписок),

которое обращает списки. Например,

        обращение( [a, b, c, d], [d, c, b, a] ).

5.    Определите предикат

        палиндром( Список).

Список называется палиндромом, если он читается одинаково, как слева направо, так и справа налево. Например,  [м, а, д, а, м].

6.    Определите отношение

        сдвиг( Список1, Список2)

таким образом, чтобы Список2 представлял собой Список1, "циклически сдвинутый" влево на один символ. Например,

        ?-  сдвиг( [1, 2, 3, 4, 5], L1),

             сдвиг1( LI, L2)

дает

        L1 = [2, 3, 4, 5, 1]

        L2 = [3, 4, 5, 1, 2]

7.    Определите отношение

        перевод( Список1, Список2)

для перевода списка чисел от 0 до 9 в список соответствующих слов. Например,

        перевод( [3, 5, 1, 3], [три, пять, один, три] )

Используйте в качестве вспомогательных следующие отношения:

        означает( 0, нуль).

        означает( 1, один).

        означает( 2, два).

        . . .

8.        Определите отношение

        подмножество( Множество, Подмножество)

где Множество и Подмножество - два списка представляющие два множества. Желательно иметь возможность использовать это отношение не только для проверки включения одного множества в другое, но и для порождения всех возможных подмножеств заданного множества. Например:

        ?-  подмножество( [а, b, с], S ).

        S = [a, b, c];

        S = [b, c];

        S = [c];

        S = [ ];

        S = [a, c];

        S = [a];

        . . .

9.    Определите отношение

        разбиениесписка( Список, Список1, Список2)

так, чтобы оно распределяло элементы списка между двумя списками Список1 и Список2 и чтобы эти списки были примерно одинаковой длины. Например:

        разбиениесписка( [а, b, с, d, e], [a, с, е], [b, d]).

10.    Перепишите программу об обезьяне и бананах из главы 2 таким образом, чтобы отношение

        можетзавладеть( Состояние, Действия)

давало не только положительный или отрицательный ответ, но и порождало последовательность действий обезьяны, приводящую ее к успеху. Пусть Действия будет такой последовательностью, представленной в виде списка ходов:

        Действия = [ перейти( дверь, окно),

                               передвинуть( окно, середина),

                               залезть, схватить ]

11.    Определите отношение

        линеаризация( Список, ЛинейныйСписок)

где Список может быть списком списков, а ЛинейныйСписок - это тот же список, но "выровненный" таким образом, что элементы его подсписков составляют один линейный список. Например:

        ? - линеаризация( [а, d, [с, d], [ ], [[[е]]], f, L).

        L = [a, b, c, d, e, f]

12.    Определите отношение

        mах( X, Y, Мах)

так, чтобы Мах равнялось наибольшому из двух чисел Х и Y.

13.    Определите предикат

        максспис( Список, Мах)

так, чтобы Мах равнялось наибольшему из чисел, входящих в Список.

14.    Определите предикат

        сумспис( Список, Сумма)

так, чтобы Сумма равнялось сумме чисел, входящих в Список.

15.    Определите предикат

        упорядоченный( Список)

который принимает значение истина, если Список представляет собой упорядоченный список чисел. Например: упорядоченный [1, 5, 6, 6, 9, 12] ).

16.    Определите предикат

        подсумма( Множ, Сумма, ПодМнож)

где Множ это список чисел, Подмнож подмножество этих чисел, а сумма чисел из ПодМнож равна Сумма. Например:

        ?- подсумма( [1, 2. 5. 3. 2], 5, ПМ).

        ПМ = [1, 2, 2];

        ПМ = [2, 3];

        ПМ = [5];

        . . .

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

        между( Nl, N2, X)

которая, с помощью перебора, порождает все целые числа X, отвечающие условию Nl <=X <=N2.

22