ТЕМА: Основные механизмы работы Пролога, списки




ДИСЦИПЛИНА: Рекурсивно-логическое программирование

ЗАНЯТИЕ: Лабораторная работа №1

ТЕМА: Основные механизмы работы Пролога, списки

10 Знакомство со средой Visual Prolog.

· Настройка системы, интерфейс

· Структура программы: domains, database, predicates, goal, clauses

20 Изучение основных механизмов работы Пролога: объекты и отношения между ними.

· Управление перебором. Отсечение (cut,!) и откат (fail). Сопоставление аргументов. Определение отношения “различны”.

· Арифметические операции:

сравнения чисел, факториал, максимальное/минимальное/среднее двух и более чисел.

· Родственные отношения:

· Ввести в программу факты следующего вида:

человек, родитель;

· На базе приведенных выше фактов определить отношения:

· мужчина, женщина;

· отец, мать, сын, дочь;

· брат, сестра, братья, сестры;

· дедушка, бабушка;

· дядя, тетя, племянник, племянница;

· предок, отпрыск, люди одного поколения.

· Определить отношения: ребенок, взрослый.

30 Сформулировать все возможные вопросы, касающиеся отношений, определенных в программе.

40 Выполнить индивидуальное задание к лабораторной работе №1 в соответствии со своим вариантом.

 

Управление перебором. Отсечение (cut,!) и откат (fail). Списки.

 

Общие задания.

 

/****************************************************************************/

% ЗАДАЧА 1.

% Дана программа.

% 1.1. Исполните согласование внешней цели p(a,Y,Z).

% 1.2. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.3. Укажите системе вывода, чтобы выполнила согласование только

% первого определения предиката p(X,Y,Z).

% 1.4. Исполните согласование внешней цели p(a,Y,Z).

% 1.5. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.6. Удалите из текста программы все внесенные Вами изменения.

% 1.7. Добавьте факт p1(a,11). в базу данных.

% 1.8. Исполните согласование внешней цели p(a,Y,Z).

% 1.9. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.10. Внесите в программу изменения, соответствующие выполнению

% требования 1.3.

% 1.11. Исполните согласование внешней цели p(a,Y,Z).

% 1.12. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.13. Поместите в комментарий текст программы и перейдите к

% выполнению требований к работе с программой задачи 2.

 

domains

x = symbol

y, z = integer

predicates

p(x, y, z)

p1(x, y)

p2(x, z)

p3(x, y)

clauses

p1(a, 1).

p2(a, 2).

p3(a, 3).

p(X, Y, Z):- p1(X, Y), p2(X, Z).

p(X, Y, Z):- p2(X, Z), p3(X, Y).

 

/****************************************************************************/

% ЗАДАЧА 2.

% Дана программа.

% Удалите символы /* и */, ограничивающие текст программы.

% 1.1. Исполните согласование внешней цели r(X).

% 1.2. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.3. Исполните согласование внешней цели r(1).

% 1.4. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.5. Исполните согласование внешней цели r(2).

% 1.6. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.7. Укажите системе вывода, чтобы выполнила согласование только

% первого определения предиката r(X) или никакого.

% 1.8. Исполните согласование внешней цели r(X).

% 1.9. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.10. Исполните согласование внешней цели r(1).

% 1.11. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.12. Исполните согласование внешней цели r(2).

% 1.13. В комментариях запишите и прокомментируйте результат

% согласования цели.

% 1.14. Поместите в комментарий текст программы и перейдите к

% выполнению требований к работе с программой задачи 3.

/*

domains

x = integer

predicates

r(x)

r1(x)

r2(x)

clauses

r1(1).

r2(2).

r(X):- r1(X), write("согласовано первое определение").

r(X):- r2(X), write("согласовано второе определение").

*/

 

/****************************************************************************/

% ЗАДАЧА 3.

% Дана программа.

% Удалите символы /* и */, ограничивающие текст программы.

% 1.1. Какие цели можно сформулировать к базе знаний,

% представленной в данной программе?

% 1.2. Исполните согласование целей.

% 1.3. В комментариях запишите и прокомментируйте результат

% согласования целей.

% 1.4. Какую задачу выполняет отсечение?

% 1.5. Поместите в комментарий текст программы и перейдите к

% выполнению требований к работе с программой задачи 4.

/*

domains

l = integer*

predicates

append2(l, l, l)

clauses

append2([], L, L):-!.

append2([H|L1], L2, [H|L3]):- append2(L1, L2, L3).

*/

 

 

/****************************************************************************/

% ЗАДАЧА 4.

% Дана программа.

% Удалите символы /* и */, ограничивающие текст программы.

% Укажите системе, чтобы пpогpамма возвpатила

% только пеpвые pешения для каждого опpеделения

% пpедиката p(X).

/*

domains

x = integer

predicates

p(x)

p1(x)

p2(x)

p4(x)

clauses

p1(1).

p1(11).

p2(1).

p2(11).

p4(X):- X = 10 + 10.

 

p(X):- p1(X), write("p1 ").

p(Y):- p2(Y), write("p2 ").

p(Z):- p4(Z), write("p4 ").

*/

 

 

Индивидуальные задания по вариантам (списки).

%

% ВАРИАНТ: 1

% ЗАДАНИЕ: Добавить список l1 после k-го элемента списка l.

% l - список, элементами которого являются списки.

%

% ВАРИАНТ: 2

% ЗАДАНИЕ: Удалить m элементов списка l, следующих после

% k-го элемента l.

% l - список, элементами которого являются списки.

%

% ВАРИАНТ: 3

% ЗАДАНИЕ: Заменить k-й элемент списка l списком l1.

% l - список, элементами которого являются списки.

%

% ВАРИАНТ: 4

% ЗАДАНИЕ: Обратить отрезок списка l между k1-ым и k2-ым

% его элементами.

% l - список, элементами которого являются атомы.

%

% ВАРИАНТ: 5

% ЗАДАНИЕ: Получить "простой" список включением элементов

% списка l1 между i-ым и i+1 -ым элементами списка l,

% если некоторый объект obj совпадает с k-ым элементом

% списка l1.

%

% ВАРИАНТ: 6

% ЗАДАНИЕ: Получить "простой" список, в котором одинаковые

% элементы данного списка l сгруппированы в "отрезки"

% списка, например,

% l = (a b b a c a b c).

% Получить l' = (a a a b b b c c).

%

% ВАРИАНТ: 7

% ЗАДАНИЕ: Обратить данный список l, удалив из него элементы,

% совпадающие с первым элементом списка l.

% l - список, элементами которого являются списки.

%

% ВАРИАНТ: 8

% ЗАДАНИЕ: Дано: l - "простой" список, obj - атом.

% Сформировать списки из заданного obj с каждым

% элементом списка l.

% Возвратить список, элементами которого являются

% сформированные по указанному правилу списки.

%

% ВАРИАНТ: 9

% ЗАДАНИЕ: Исключить все повторные вхождения элементов списка l.

% l - список, элементами которого являются списки.

%

% ВАРИАНТ: 10

% ЗАДАНИЕ: Обратить отрезок из m элементов, следующих за k-ым

% элементом данного списка l.

% l - список, элементами которого являются списки.

% Списки из обращенного отрезка не обращать.

%

% ВАРИАНТ: 11

% ЗАДАНИЕ: l - список, элементами которого являются списки.

% Обратить списки, составляющие отрезок из m элементов

% списка l, следующих после k-го элемента.

%

% ВАРИАНТ: 12

% ЗАДАНИЕ: Упорядочить по возрастанию все нечетные элементы

% списка l.

% l - список, элементами которого являются атомы.

%

 

% ВАРИАНТ: 13

% ЗАДАНИЕ: l - список, элементами которого являются списки.

% Определить позицию и длину наиболее "длинного"

% элемента списка l.

%

% ВАРИАНТ: 14

% ЗАДАНИЕ: l1 - список, элементами которого являются списки.

% Удалить из каждого подсписка списка l1 все элементы,

% расположенные посередине, но только если длина

% соответствующего подсписка нечетная.

%

% ВАРИАНТ: 15

% ЗАДАНИЕ: l - список, элементами которого являются списки,

% состоящие из чисел.

% Определить номер элемента списка l, содержащего

% наименьшее число.

% Например, в случае l = ((1 3) (0) (6 1)),

% ответ: n = 2.

% Не рассматривать случай, когда такой элемент

% не единственный.

%

% ВАРИАНТ: 16

% ЗАДАНИЕ: l - список, элементами которого являются атомы.

% Проверить, является ли список l упорядоченным.

%

% ВАРИАНТ: 17

% ЗАДАНИЕ: Упорядочить по убыванию все четные подсписки списка l.

%

% ВАРИАНТ: 18

% ЗАДАНИЕ: Удалить из списка l все подсписки, длины которых равны

% их порядковым номерам в l.

% Например, в случае l = ((a) (b) (c d e)),

% необходимо удалить подсписки (a) и (c d e).

%

% ВАРИАНТ: 19

% ЗАДАНИЕ: l1 - список списков списков чисел.

% Необходимо получить список чисел l2, в котором каждый

% элемент равен сумме чисел соответствующих подсписков.

% Например, в случае l1 = (((1 2 3)(4 5 6))((7 8 9))),

% l2 = (A B), где A = 1+2+3+4+5+6, B = 7+8+9.

%

% ВАРИАНТ: 20

% ЗАДАНИЕ: l - список, элементами которого являются списки.

% Возвратить позицию того элемента списка l, который

% содержит наибольшее число. Известно, что

% повторяющихся чисел в списке l нет.

%

% ВАРИАНТ: 21

% ЗАДАНИЕ: Удалить m элементов списка l, следующих за k-ым

% его элементом.

% l - список, элементами которого являются списки.

%

 

 

% ВАРИАНТ: 22

% ЗАДАНИЕ: Заменить элементы списка l1 после k-го

% элементами списка l2 начиная с k-го,

% если первые k-1 элементов этих списков

% совпадают.

% l1 и l1 - простые списки.

%

% ВАРИАНТ: 23

% ЗАДАНИЕ: Даны списки списков чисел l1 b l2.

% Определить, какой из списков меньше (как по значениям

% элементов, так и по длинам подсписков и самих списков).

%

% ВАРИАНТ: 24

% ЗАДАНИЕ: Дан список чисел l.

% Проверить, являются ли его элементы, начиная с

% третьего, суммами двух предыдущих элементов.

%

% ВАРИАНТ: 25

% ЗАДАНИЕ: Удалить из списка чисел l все элементы, кратные

% числу n.

%

% ВАРИАНТ: 26

% ЗАДАНИЕ: Найти среднее арифметическое чисел, составляющих

% список l.

% l - список, элементами которого являются атомы.

%

% ВАРИАНТ: 27

% ЗАДАНИЕ: l1,l2 - списки, элементами которых являются атомы.

% Найти список l3, являющийся подсписком и l1 и l2.

%

% ВАРИАНТ: 28

% ЗАДАНИЕ: l1,l2 - списки, элементами которых являются атомы.

% Выяснить, содержит ли список l1 все элементы из

% списка l2 (только одно вхождение).

%

% ВАРИАНТ: 29

% ЗАДАНИЕ: l1,l2,l3 - списки, элементами которых являются атомы.

% Заменить в списке l1 все вхождения элементов из

% списка l2 на элементы из списка l3 под

% соответствующими порядковыми номерами.

%

% ВАРИАНТ: 30

% ЗАДАНИЕ: l1 - список, элементами которого являются символы

% (тип char). Преобразовать все прописные буквы в

% строчные, а строчные - в прописные.

% Для получения кода символа применяется предикат

% char_int(char, integer).

%

% ВАРИАНТ: 31

% ЗАДАНИЕ: l - список, элементами которого являются числа в

% диапазоне от 0 до 9. Подсчитать число, получающееся

% по следующему правилу:

% если l = (5 1 2 6),

% то число = 5*1000 + 1*100 + 2*10 + 6 = 5126.

%

% ВАРИАНТ: 32

% ЗАДАНИЕ: l1,l2 - списки, элементами которых являются атомы.

% Выяснить, содержит ли список l1 все элементы из

% списка l2 (только три вхождения).

%

% ВАРИАНТ: 33

% ЗАДАНИЕ: Построить список l, элементами которого являются

% значения факториала от 1 до n.

%

% ВАРИАНТ: 34

% ЗАДАНИЕ: l1 - список, элементами которого являются атомы.

% Построить список l2, содержащий все подсписки

% списка l1, имеющие длину не менее n и не более m.

%

% ВАРИАНТ: 35

% ЗАДАНИЕ: Данный список l имеет структуру вложения вида:

% (((...))). Определить "глубину" вложения.

% Например, в случае (((a b))) "глубина"

% вложения равна 3.

%

% ВАРИАНТ: 36

% ЗАДАНИЕ: l1 - список, элементами которого являются атомы.

% Сформировать список списков l2, содержащий элементы

% из списка l1, сгруппированные в подсписки длины n.

%

% ВАРИАНТ: 37

% ЗАДАНИЕ: l1,l2 - списки, элементами которых являются атомы.

% Построить список l3, нечетные элементы которого

% содержат соответствующие нечетные элементы списка l1,

% а четные - четные из l2.

%

% ВАРИАНТ: 38

% ЗАДАНИЕ: l1,l2 - списки, элементами которых являются атомы.

% Построить список l3, элементы которого содержат

% сначала элемент из списка l1, затем элемент из списка

% l2, затем следующий элемент из l1 и т.д.

%

% ВАРИАНТ: 39

% ЗАДАНИЕ: l1 - список, элементами которого являются структуры,

% в которых хранятся дневные сводки температуры за

% месяц. Сформировать список l2, содержащий только те

% дни месяца, в которые температура была одинаковой.

% Например, 5-го и 26-го числа температура была 26 С.

%

% ВАРИАНТ: 40

% ЗАДАНИЕ: l1 - список, элементами которого являются списки.

% Сформировать список l2, элементами которого должны

% быть списки, содержащие два элемента: минимальное

% и максимальное значения элементов соответствующих

% подсписков списка l1.

%

/****************************************************************************/

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-01-23 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: