Выбрать породы собак по характеристикам - Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте Столкнулся с проблемой, которую своими силами преодолеть не получилось. Нужно сформировать список пород собак выбирая по характеристикам: форма ушей, окрас. Вот что получилось, код рабочий:
Листинг программы
  1. domains
  2. list = Symbol*
  3. predicates
  4. dog(Symbol poroda,Symbol ushi,Symbol okras)
  5. getDogsList(Symbol poroda,Symbol ushi,list,list)
  6. member(Symbol,list)
  7. clauses
  8. dog(ovcharka,stoyat,chornyi).
  9. dog(dalmatin,visyat,chernobelyi).
  10. dog(doberman,stoyat,chornyi).
  11. member(Elem, [Elem|_Tail]).
  12. member(Elem, [_Head|Tail]):-member(Elem, Tail).
  13. getDogsList(Ushi,Okras,L,DogsList):-
  14. dog(X,Ushi,Okras),
  15. not(member(X,L)),
  16. getDogsList(Ushi,Okras,[X|L],DogsList).
  17. getDogsList(_,_,X,X).
  18. goal
  19. getDogsList(stoyat,chornyi,[],DogsList),write(DogsList). %["doberman","ovcharka"]
Теперь, нужно реализовать возможность выбора породы не указывая некоторые характеристики. Например опустить окрас. Если поставить цель
Листинг программы
  1. getDogsList(stoyat,_,[],DogsList),write(DogsList).
То возникает предупреждение и ошибка.
Листинг программы
  1. W;dogs.pro, pos: 497, 708 The variable is not bound in this clause _
  2. E;dogs.pro, pos: 497, 721 Basic domain becomes reference domain: symbol
Курсор указывает на ошибку в 19 строке

getDogsList(_,|_,X,X)

. Как можно сформировать список указав не все характеристики породы?

Решение задачи: «Выбрать породы собак по характеристикам»

textual
Листинг программы
  1.   getDogsList(Ushi,Okras,DogsList):-
  2.     findall(X, dog(X,Ushi,Okras), DogsList).

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


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

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

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы