среда, 15 июля 2009 г.

Списки в Прологе

Лабораторная работа №4
Списки в Прологе

Прочитайте о списках в Прологе и изучите приведённые там примеры. Напишите предикаты для решения следующих задач (любые 12 задач!).

1. Выведите список из букв в обратном порядке.

2. Выведите только чётные элементы списка.

3. Найдите сумму элементов списка.

4. Предположим у вас есть такой немецко-английский словарь, в котором записаны числа от 1 до 9:
word (eins, one).
word (zwei, two).
word (drei, three).
word (vier, four).
word (fuenf, five).
word (sechs, six).
word (sieben, seven).
word (acht, eight).
word (neun, nine).
Напишите предикат translate (G,E), который бы переводил список германских слов в соответствующий список английских слов. Например, ответом на вопрос translate ([eins, neun, zwei], X) должен быть список X = [one, nine, two].

5. Определите назначение следующих предикатов:
• last(X,Y):-append(_,[X],Y).
• butlast(X,Y):-append(X,[_],Y).
• prefix(X,Y):-append(X,_,Y).
• suffix(X,Y):-append(_,X,Y).
• together(X,Y,L):-append(_,[X,Y|_],L).
• members([],_).
members([X|Xs], Ys):-member(X, Ys), members(Xs,Ys).
• sum2([],0).
sum2([X],X).
sum2([_,X|T],S):-sum2(T,S1),S=S1+X.

6. Даны предикаты, генерирующие все перестановки элементов списка (первый аргумент – исходный список, второй – его перестановка). Объясните, как они работают?
• permutation([],[]).
permutation(L,[X|T]):- select(X,L,R), permutation(R,T).

• permutation2([],[]).
permutation2([X|T],R):- permutation2(T,L), select(X,R,L).

7. Увеличьте четные элементы списка на 1, а нечётные уменьшите на 1.

8. Удалите из списка все элементы, значения которых лежат вне заданного отрезка.

9. Удалите из списка элементы с четными номерами.

10. Найдите среди положительных элементов списка минимальный.

11. Найдите и удалите последний элемент списка.

12. Осуществите циклический сдвиг элементов списка на один вправо.

13. Замените в списке все вхождения заданного числа нулём.

14. Разделите исходный список на два списка: список положительных чисел и список отрицательных чисел.

15. Поэлементно перемножьте элементы двух списков.

16. Проверьте, что список, содержащий буквы, является палиндромом.

17. Проверьте, что все элементы списка различны.

18. Проверьте, что два списка совпадают с точностью до порядка следования элементов. Например, [1,2,3,4] и [4,1,3,2] совпадают.

19. Определите порядковый номер элемента в списке.

20. Удалите заданный элемент из списка.

ЭФфективное профессиональное создание сайта на различных системах управления контентом или обычном Html

Одно из увлекательнейших хобби, рыбалка привлекает и мужчин, и женщин. А проводимые соревнования по рыбалке лишь увеличивают ее популярность.

Качественное продвижение сайта киев самыми современными и доступными методами.