Visual Prolog 5.2 логическая задача "На выставке собак"
Формулировка задачи:
Доброго времени суток. Есть следующая задача:
На выставке собак случилась интересная ситуация.
Четыре брата - Энди, Билл, Николас и Дональд - выставили по две собаки, которых звали так же, как братьев.
То есть двух собак звали Энди, двух Билл, двух - Николас и двух - Дональд.
Из восьми собак было три лабрадора, три дога и два далматинца.
Никто из братьев не держит двух собак одной породы.
Нет двух собак одной породы с одинаковой кличкой.
Никакая из собак Энди не носит имя Дональд и никакая из собак Николаса не зовется Энди.
Нет дога по кличке Энди, и нет Лабрадора по кличке Дональд. У Билла нет лабрадора.
Кто держит далматинцев? Какие у них клички?
Собственными силами был получен такой код:
Логика такая: мы предполагаем, что есть два далматина и задаем им случайных хозяев и клички. Также мы формируем полный список псов и прогоняем его через все условия, после чего проверяем входят ли те два далматина в этот список.
Проблема судя по всему такая, что элементы списка как то странно проходят через условия(или даже вообще не проверяются). Скорее всего я не понимаю чего-то важного в работе Prologa
Очень рассчитываю на помощь. Знаю что такая задача уже когда-то решалась, но препод очень тщательно проверяет на плагиат, и уже один раз заворачивал, если кто-нибудь сможет подсказать как доделать мою задумку, или скорректировать ее буду очень признательна.
P.S. также пыталась решить формируя список хозяев, а не псов:
однако проблема точно такая-же.
Решение задачи: «Visual Prolog 5.2 логическая задача "На выставке собак"»
textual
Листинг программы
?- about_dogs(HostList). dog(bill,dal,andy) dog(nik,dal,don) HostList = [dog(andy, lab, nik), dog(andy, dog, bill), dog(bill, dog, don), dog(bill, dal, andy), dog(nik, lab, bill), dog(nik, dal, don), dog(don, lab, andy), dog(don, dog, nik)] .
Объяснение кода листинга программы
- Задача программы - выводить информацию о собаках.
- Входные данные (переменная HostList) - список собак.
- Структура каждой собаки:
- имя (переменная HostName)
- порода (переменная Breed)
- владелец (переменная Owner)
- Вывод информации о каждой собаке в формате: имя, порода, владелец.
- Пример вывода:
andy, lab, nik
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д