- •Практическое занятие 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
Однажды на отдыхе за круглым столом оказались пятеро ребят родом из Москвы, Санкт-Петербурга, Новгорода, Перми и Томска: Юра, Толя, Алеша, Коля и Витя. Москвич сидел между томичом и Витей, санкт-петербуржец - между Юрой и Толей, а напротив него сидели пермяк и Алеша. Коля никогда не был в Санкт-Петербурге, а Юра не бывал в Москве и Томске, а томич с Толей регулярно переписываются. Определите, в каком городе живет каждый из ребят.
Ответ
Толя живет в Москве,
Витя - в Санкт-Петербурге,
Юра - в Новгороде,
Коля - в Перми,
а Алеша - в Томске.
Задача 6
Кто любит Вову?
В классе есть пять первоклассников: Аня, Вова, Вика, Света и Сережа.
1. Тот, кто любит Вову - дружит со Светой.
2. Те, кого Вика считает своими врагами зовут Аня и Света. Зато Вика дружит с Вовой и Сережей.
3. Вова дружит с Викой, Аней и Сережей, но не дружит со Светой.
Как зовут девочку, которая любит Вову?
Ответ
: Аня
Задача 7
На деловой встрече были писатель, химик, биолог и врач. Их звали (по алфавиту): Анна, Дмитрий, Екатерина и Стас. Дмитрий сказал сидящему рядом биологу, что только что встретил Екатерину с пончиками. Анна сидела напротив врача и рядом с химиком. Врач про себя размышлял о том, что Стас - глупое имя. Назовите специальность каждого.
Ответ
биологом была Анна.
Врачом был Стас
Екатерина - писатель, а Дмитрий - химик
Задача 8
В поезде Москва - Петербург едут пассажиры Иванов, Петров, Сидоров. Такие же фамилии имеют машинист, электрик и кондуктор бригады поезда. Известно, что:
1) Пассажир Иванов живет в Москве.
2) Кондуктор живет на полпути от Москвы до Петербурга.
3) Пассажир, однофамилец кондуктора, живет в Петербурге.
4) Пассажир, живущий ближе к месту жительства кондуктора, чем другие пассажиры, точно втрое старше кондуктора.
5) Пассажиру Петрову в тот день исполнилось 20 лет.
6) Сидоров (из бригады) недавно выиграл у электрика партию в бильярд.
Какая фамилия у машиниста?
Ответ
: Сидоров.
Задача 9
Перед началом забегов зрители обсуждали скаковые возможности трех лучших лошадей с кличками "Абрек", "Ветер", "Стрелок".
- Победит или "Абрек", или "Стрелок", - сказал один болельщик.
- Если "Абрек" будет вторым, то победу принесет "Ветер", - сказал другой болельщик.
- Много вы понимаете в лошадях, - возмутился третий болельщик. Вторым придет или 'Ветер", или "Абрек".
- А я вам скажу, - вмешался четвертый болельщик, - что если "Абрек" придет третьим, то "Стрелок" не победит.
После забега выяснилось, что три лошади - "Абрек", "Ветер" и "Стрелок" - заняли три первых места, не деля между собой ни одного из мест, и что все четыре предсказания болельщиков были правильны. Как кончился забег?
Задача 10
В семье пять человек: муж, жена, их сын, сестра мужа и отец жены. Их профессии - инженер, юрист, слесарь, учитель и экономист. Известно, что юрист и учитель - не кровные родственники. Слесарь младше экономиста, и оба играют в футбол за сборную своего завода. Инженер моложе учителя, но старше жены своего брата. Назовите профессии каждого.
Ответ
сестра мужа - инженер
жена - юрист, а учитель - ее муж.
слесарь - это сын, а экономист - его дед