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)] .

Объяснение кода листинга программы

  1. Задача программы - выводить информацию о собаках.
  2. Входные данные (переменная HostList) - список собак.
  3. Структура каждой собаки:
    • имя (переменная HostName)
    • порода (переменная Breed)
    • владелец (переменная Owner)
  4. Вывод информации о каждой собаке в формате: имя, порода, владелец.
  5. Пример вывода: andy, lab, nik

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.5 из 5