- •Практическое занятие 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
- •Задачи повышенной сложности
Задача 16
Семья, состоящая из отца, матери и трех дочерей - Ани, Веры и Cветы, - купила телевизор. Каждому, конечно, хотелось посмотреть передачу в первый вечер.
- Нам нужно распределить обязанности, чтобы не остаться без ужина, - сказал папа.
- Правильно, - поддержала мама. - Но только когда ты будешь смотреть передачу, я тоже сяду у телевизора.
- Хорошо, - согласился папа. - Кому из нас повезло, так это Свете и Вере, - улыбнулся папа.
- По крайней мере, одна из них получит удовольствие.
- А нам с тобой, Анечка, придется смотреть передачу только по очереди, - сказала мама.
- Я согласна, - ответила Аня. - Только ты нам разреши с Верой вместе работать на кухне или вместе быть у телевизора.
- Пожалуй, Свету одну нельзя оставлять, - сказал папа. - Если она пожелает смотреть передачу, то придется и мне с Верой посидеть с ней.
Все предложения были приняты. Кто смотрел передачу в первый вечер?
Задача 17
Четыре молодых рабочих - Антонов, Петров, Степанов и Демьянов - работают на одном предприятии и учатся заочно. Как составить для них график свободных от работы дней в первые четыре дня, исходя из таких условий производства:
1) если во вторник выходными будут Демьянов или Антонов, то Степанову нужно дать выходной в понедельник;
2) если Демьянова освободить от работы в четверг, то Антонова нужно освободить в понедельник, и Степанова в среду;
3) если Степанова освободить от работы во вторник или Демьянова освободить в среду, то Петрову нужно давать выходной день в четверг;
4) если Антонов будет освобожден в среду, то у Петрова выходной день будет во вторник, а если Петрову поставить выходной в среду, то Антонов может не приходить на работу во вторник;
5) если Демьянову высвободить понедельник, то у Степанова выходной придется на среду, а если Демьянов получит выходной в среду, то тогда Антонов может не приходить на работу во вторник.
Задача 18
Пять мальчиков играли во дворе в футбол и разбили мячом окно.
Ваня сказал: "Это или Паша, или Денис".
Паша сказал: "Это сделал не я и не Вова".
А Вова сказал: "Это сделал не Митя".
А бабушка сидела на лавочке и всё видела, но не выдала того, кто разбил окно. Но ведь вы и сами догадаетесь.
Ответ
Окно разбил Денис.
Задача 19
В отделении Сбербанка работают: кассир, контролер и заведующий. Их фамилии: Борисов, Иванов и Сидоров. Кассир не имеет ни братьев, ни сестер и меньше всех ростом. Сидоров женат на сестре Борисова и ростом выше контролера. Назовите фамилии кассира, контролера и заведующего.
Ответ
Борисов - контролер,
Иванов - кассир,
Сидоров – заведующий
Задача 20
Обсуждался вопрос о включении в состав сборной команды пяти молодых игроков: Асеева, Валеева, Сватеева, Деева и Евтеева.
Выбор обусловлен следующими условиями:
1) В команду необходимо включить не менее чем одного из трех игроков: Асеева, Валеева, Евтеева, но не более чем одного из трех игроков: Асеева, Сватеева, Деева.
2) Сватеева можно включить в сборную без Валеева тогда и только тогда, когда Асеев будет включен, а Деев не будет включен.
3) Если Валеев будет включен в сборную, а Сватеев не будет включен, то сборную нужно пополнять и Деевым, и Евтеевым.
4) Если Асеев не будет включен в команду, то нужно в нее включить и Сватеева, и Евтеева.
Кого из игроков можно включить в сборную команду?