- •Практическое занятие 1. Основы логического программирования
- •Основные парадигмы программирования
- •Понятие предиката
- •Унификация - процесс нахождения решения в Прологе
- •Факты и правила в Прологе
- •Пример программы на Прологе
- •Практикум 1-1
- •Практикум 1-2
- •Практикум 1-3
- •Контрольное задание 1 Исходные данные
- •Задание 1. Генеалогическое дерево
- •Задание 2. Представление правил
- •Практикум 2-1
- •Практикум 2-2
- •Стандартные предикаты
- •Ввод и вывод
- •Практикум 2-3
- •Описание арифметических операций
- •Практикум 2-4
- •Самостоятельные задания
- •Практическое занятие 3. Управление процессом решения задачи. Поиск с возвратом. Рекурсия
- •Использование предиката fail
- •Практикум 3-1
- •Использование предиката cut
- •Практикум 3-2
- •Использование рекурсии
- •Практикум 3-3
- •Практикум 3-4
- •Практикум 3-5
- •Практикум 3-6
- •Хвостовая рекурсия
- •[Head|Tail] [Голова|Хвост]
- •Практикум 4-1
- •Встроенный предикат findall
- •Практикум 4-2
- •Вычисление длины списка
- •Практикум 4-3
- •Проверка принадлежности элемента списку
- •Практикум 4-4
- •Слияние двух списков
- •Практикум 4-5
- •Вычисление суммы списка чисел
- •Практикум 4-6
- •Практикум 4-7
- •Удаление элемента из списка
- •Практикум 4-8
- •Получение элемента списка по его номеру
- •Практикум 4-9
- •Запись элементов списка в обратном порядке
- •Поиск максимального (минимального) элемента в списке
- •Практикум 4-10
- •Самостоятельные задания
- •Контрольное задание 2 Исходные данные
- •Практическое занятие 5. Решение логических задач
- •Пример простой логической задачи (два измерения)
- •Практикум 5-1
- •Практикум 5-2
- •Пример задачи (три измерения)
- •Практикум 5-3
- •Пример задачи (альтернативные высказывания)
- •Практикум 5-4
- •Практикум 5-5
- •Самостоятельные задания
- •Контрольное задание 3 Исходные данные
- •Задача 1
- •Задача 2
- •Задача 3
- •Задача 4
- •Задача 5
- •Задача 6
- •Задача 7
- •Задача 8
- •Задача 9
- •Задача 10
- •Задача 11
- •Задача 12
- •Задача 13
- •Задача 14
- •Задача 15
- •Задача 16
- •Задача 17
- •Задача 18
- •Задача 19
- •Задача 20
- •Задачи повышенной сложности
Практикум 5-3
|
В пансионате отдыхали Арбатов, Быков, Власов, Гордеев, Дмитриев, Елисеев. Все эти люди приехали из разных городов: Москвы, Санкт-Петербурга, Киева, Одессы, Риги и Таллина. Кроме того, известно, что: - Арбатов и москвич - врачи; -Дмитриев и петербуржец - учителя; -Власов и киевлянин - инженеры; -Быков и Елисеев никогда не были в Киеве; -Рижанин старше Арбатова, а житель Таллина старше Власова; - Быков и москвич никогда не были в Одессе, а Власов и рижанин – в Таллине. Выяснить, кто в каком городе живет и у кого какая профессия. Ответ для проверки представлен на рис. 5.4
|
Рис. 5.4. Ответ к задаче из Практикума 5-2
Пример задачи (альтернативные высказывания)
В спортивных соревнованиях принимали участие пять команд: "Вымпел", "Метеор", "Нептун", "Старт" и "Чайка". Об их итогах соревнования имеется пять высказываний:
1). Второе место занял "Вымпел", a "Cтарт" оказался на третьем.
2). Хорошо выступала команда "Нептун", она стала победителем, а "Чайка" вышла на второе место.
3). Да нет же, "Чайка" заняла только третье место, а "Нептун"- был последним.
4). Первое место по праву завоевал "Cтарт", а "Метеор" был четвертым.
5). Да, "Метеор", действительно, был четвертым, а "Вымпел" был третьим.
Известно, что команды не делили места между собой и что в каждом высказывании одно утверждение правильное, а другое нет.
Как распределились места между командами?
Секция clauses Пролог-программы для решения этой задачи представлена на рис. 5.5.
Рис. 5.5. Секция clauses для задачи «Спортивные соревнования»
Практикум 5-4
|
Найдите решение для примера рис. 5.5
|
Практикум 5-5
|
Для четырех дежурных (Антипов, Климов, Марков и Лебедев) нужно составить график дежурств по одному с понедельника до четверга с соблюдением следующих условий: 1) Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов. 2) Ecли Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник. 3) Если Марков не сможет дежурить в четверг, то Климов будет дежурить в среду. 4) Если Лебедев придет дежурить во вторник, то Климов не будет дежурить в понедельник. 5) Если Антипов не сможет дежурить в понедельник, то Марков не сможет дежурить во вторник. Каким должен быть график дежурств ?
|
Самостоятельные задания
1. На школьном вечере танцевали три пары. Юноши, как и девушки, были одеты в костюмы разных цветов: красный, зеленый и синий. Оказавшись в один из моментов рядом с девушкой в зеленом, юноша в красном обратился к ней: "Неправда ли, забавно получается: ни у кого из нас цвет костюма не совпадает с цветом костюма партнера". В костюме какого цвета был юноша, танцевавший в паре с девушкой в красном?
Ответ
Юноша в красном танцует с девушкой в синем,
а девушка в зеленом - с юношей в синем.
девушка в красном танцует с юношей в зеленом