Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Упражнения. 3.3. Определите два предиката



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

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

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

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

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

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

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

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

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

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

3.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]

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

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

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

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

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

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

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

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

...

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

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

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

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

S = [a, b, c];

S = [b, c];

S = [c];

S = [];

S = [a, c];

S = [a];

...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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





Дата публикования: 2015-10-09; Прочитано: 344 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...