Регистрация
Среда программирования: SWI Prolog
Название работы: Прикладные методы искусственного интеллекта. КР1 + КР2. Вариант 10
Вид работы: Контрольная работа
Описание: Прикладные методы искусственного интеллекта.
КР1
Вариант 10.
Задача 1. Напишите предикат all(+P, +L), который проверяет "Для всех ли элементов списка L выполняется предикат P?"
Задача 2. Напишите предикат filter(+V, +P, -L) - истинный тогда и только тогда, когда список L есть список всех элементов из списка V, удовлетворяющих предикату P ("фильтрация" списка).
Задача 3. Определите предикат p(+V, +N, -L) - истинный тогда и только тогда, когда L - список элементов списка V, встречающихся в нем не менее N раз. Проверьте работу этого предиката на примере [a, a, b, a, c, b, c, a, b, b, d, a, b] для N=1,2,5,0.
Задача 4. Напишите предикат summa_digits(+N, -S) - истинный тогда и только тогда, когда S - сумма цифр натурального числа N.
Задача 5. Построить программу "сжать", назначение которой - преобразование английских слов в их "звуковой" код. Этот процесс предусматривает "сжатие" примерно одинаково звучащих слов в одинаковый их код - своего рода, аббревиатуру этих слов. Слова "сжимаются" в соответствии со следующими правилами:
• первая буква слова сохраняется;
• все последующие за ней гласные, а также буквы "h", "w" и "y" удаляются;
• сдвоенные буквы заменяются одиночными;
• закодированное слово состоит не более чем из четырех букв, остальные буквы удаляются.
Примеры: сжать(barrington, brng) и сжать(llewellyn, ln) - выполнено.
Указание. Воспользуйтесь предикатом name/2.
КР1
Вариант 10. Рыцари и дамы. Поиск в глубину с ограничением глубины до 16.
На берег реки приезжают 3 рыцаря, каждый со своей дамой. В их распоряжении имеется лодка, способная вместить не более 2-х человек. Как смогут перебраться на другой берег рыцари со своими дамами, если требуется выполнить условие: ни одна дама не может остаться без своего рыцаря в обществе других рыцарей - она тут же подвергается насилию (нравы "рыцарей" не слишком-то изменились с тех пор). Лошади переплывают реку сами, дамы гребут веслами, как и рыцари, лодка может пересекать реку сколько угодно раз.
Указания к решению. Удобно рыцарей обозначать атомами a, b и c и их соответствующих дам тоже теми же атомами. Различные состояния этой задачи задаются информацией, на каком берегу находятся лодка и списком рыцарей и дам, находящихся же на этом берегу. Поэтому структура
state(НаКакомБерегуЛодка,
СписокРыцарейНаТомБерегуГдеЛодка,
СписокДамНаТомБерегуГдеЛодка)
полностью описывает состояние. Возможные значение первого аргумента: атомы west (западный берег) и east (восточный берег). Второй и третий аргументы - списки из элементов a, b и c. В этой задаче списки рыцарей и дам нужно рассматривать как множества, т. е. не учитывать порядок перечисления и поэтому воспользоваться специальными предикатами для операций с множествами. Удобно, для отладки, так написать программу, чтобы список рыцарей (а, следовательно, дам) задавался фактом knight([a,b,c]); в этом случае легко будет менять число рыцарей для тестирования.
Начальное состояние: state(east,X,Y), где выполнено условие knight(M) и X и Y равны как множества списку M.
Конечное состояние: state(west, M,M), где выполнено условие knight(M).
Год: 2020
Данный заказ (контрольная работа) выполнялся нашим сайтом в 2020-м году, в рамках этого заказа была разработана программа в среде программирования SWI Prolog. Если у Вас похожее задание на программу, которую нужно написать на SWI Prolog, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2020-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.: ![]() Viber: ![]() Telegram: ![]() ВКонтакте: ![]() ![]() E-mail: ![]() Skype: ![]() |