Задания для самостоятельной работы. 1) Определите количество элементов в списке

1) Определите количество элементов в списке.

2) Определите сумму элементов списка

3) Определите количество нечетных элементов в списке.

4) Определите, принадлежит ли заданный элемент списку.

5) Определите, сколько раз заданный элемент входит в список.

6) Выведите максимальный элемент.

7) Выведите голову списка.

8) Выведите последний элемент.

9) Замените голову списка.

10) Определите номер элемента X.

11) Выведите элемент под номером N.

12) Удалите из списка все вхождения заданного элемента.

13) Объедините два списка.

14) Перепишите список в обратном порядке.

15) Объедините два списка без дублирования элементов.

16) Удалите первое вхождение заданного элемента.

17) Сложить поэлементно 2 списка.

18) Сложить два списка следующим образом: a1+bn, a2+bn-1,...,an-1+b2, an+b1.

19) Найти количество элементов, предшествующих первому(последнему) максимальному.

20) Переместите голову списка в конец списка.

21) Найти сумму максимального и минимального элементов списка.

22) Поменяйте местами элементы с нечетными индексами с элементами с четными индексами.

23) Составить список из цифр заданного числа в обратном порядке. Например, 127645: [5,4,6,7,2,1].

24) Выполните N последовательных перестановок головы в конец списка.

25) Увеличьте каждый элемент списка на заданный элемент.

26) Увеличьте элемент с заданным номером на заданное число.

27) Все вхождения заданного элемента уменьшите на заданное число.

28) Удалите элемент с заданным номером N.

29) Создать список, элементами которого являются 2n, n!, члены последовательности Фибоначчи.

30) Определите среднее элементов списка.

31) Замените четные элементы списка нулем.

32) Определите сумму элементов, больше заданного N.

33) Отсортируйте список методом пузырька.

34) Отсортируйте список методом вставками.

35) Отсортируйте список быстрым методом сортировки.

36) Используя предикат findall, решите следующие задачи:

1. Вывести самых молодых жильцов дома и номера квартир, в которых они живут.

2. Вывести фамилии студентов и их возраст с максимальным размером стипендии.

3. Вывести фамилии сотрудников предприятия и их оклады, оклады которых меньше среднего.

4. Вывести студентов с заданной фамилией и посчитать их количество.

Рекомендуемая литература

1. Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.-608 с.,ил.

2. Практикум по логическому программированию: Методические рекомендации для студентов и преподавателей по лабораторному практикуму по курсу «Логическое программирование»/ Сост. Р.И. Баженов, И.И. Раскина. – Омск: Изд-во ОГПУ, 1995. – 85 с.

Лабораторная работа №5. Решение логических задач.

Пример 1. Беседует трое друзей: Белокуров, Рыжов, Чернов. Брюнет сказал Белокурову: “Любопытно, что один из нас блондин, другой брюнет, третий - рыжий, но ни у кого цвет волос не соответствует фамилии”. Какой цвет волос у каждого из друзей?

Для решения построим вспомогательную таблицу:

Таблица 8.

Вспомогательная таблица соответствия

Цвет Фамилия Белокуров Рыжов Чернов
блондин -    
рыжий   -  
брюнет -   -

Выводы:

1) Белокуров не брюнет и не блондин;

2) Чернов не черный, цвет волос Чернова и Белокурова не совпадают;

3) Рыжов не рыжий, цвет волос у Рыжова и Белокурова, Рыжова и Чернова не совпадают.

Программа 23. Логическая задача на соответствие

Predicates

fam(symbol)

color(symbol)

cootvet(symbol, symbol)

Clauses

fam(belokurov).

fam(ryzov).

fam(chernov).

color(ryziy).

color(cherniy).

color(beliy).

cootvet(X,Y):- fam(X), color(Y), X=belokurov,

not(Y=cherniy), not(Y=beliy).

cootvet(X,Y):- fam(X), color(Y), X= chernov,

not(Y=cherniy),not(cootvet(belokurov,Y).

cootvet(X,Y):- fam(X), color(Y), X= ryzov,

not(cootvet(belokurov, Y), not(cootvet(chernov, Y).

Пример 2. На скамейке сидели Петя, Боря, Коля. Петя справа от Бори, Боря справа от Коли. Кто сидел посередине? Кто сидел с правого(левого) края? Кто сидел между указанными объектами(увеличьте число объектов)?

Программа 24. Логическая задача на выяснение порядка

Predicates

rayd(symbol, symbol, symbol)

sprava(symbol, symbol)

seredina(symbol

kr_cl(symbol)

kr_cpr(symbol)

Clauses

sprava(kolya, boray). /*Справа от Коли Боря*/

sprava(boray, petay).

rayd(X,Y,Z):- sprava(X,Y), sprava(Y, Z).

seredina(X):- rayd(_,X,_).

kr_cl(X):- rayd(X,_,_).

kr_cpr(X):- rayd(_,_,X).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: