Головоломка про инструменты и языки - Prolog

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

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

Маша, Лида, Женя и Катя играют на разных инструментах – виолончели, рояли, гитаре, скрипке, но каждая только на одном. Они же владеют иностранными языками – английским, французским, немецким, испанским, но каждая одним. Девушка, играющая на гитаре, говорит по-испански. Ни Лида, ни Маша не играют на скрипке и на виолончели, не знают английского языка. Девушка, которая говорит по-немецки, не играет на виолончели. Женя знает французский язык, но не играет на скрипке. Кто играет на каком инструменте и каким иностранным языком владеет? Слишком сложно это даётся. Искал решение своей проблемы, но всё равно не могу понять почему не работает. Может ли кто-нибудь помочь и объяснить в чём собственно проблема?
Листинг программы
  1. domains
  2. names = string
  3. stuffs = string
  4. langs = string
  5. structure = know(names,stuffs,langs)
  6. list = structure*
  7. predicates
  8. nondeterm stuff(string)
  9. nondeterm lang(string)
  10. nondeterm held(list)
  11. have(structure, list)
  12. clauses
  13. stuff("viol").
  14. stuff("royal").
  15. stuff("guitar").
  16. stuff("skripka").
  17. lang("eng").
  18. lang("fr").
  19. lang("nem").
  20. lang("isp").
  21.  
  22. held([know("Masha",MS,ML),know("Jenya",JS,"fr"),know("Lida",LS,LL),know("Katya",KS,KL)]):-
  23. stuff(MS),MS<>"skripka",MS<>"viol",lang(ML),ML<>"eng",ML<>"fr",
  24. stuff(JS),JS<>MS,JS<>"skripka",
  25. stuff(LS),LS<>MS,LS<>JS,LS<>"skripka",LS<>"viol",lang(LL),LL<>"eng",LL<>"fr",LL<>ML,
  26. stuff(KS),KS<>JS,KS<>LS,KS<>MS,lang(KL),KL<>MS,KL<>LL,KL<>"fr",
  27. have(know(D,"guitar","isp"),[know("Masha",MS,ML),know("Jenya",JS,"fr"),know("Lida",LS,LL),know("Katya",KS,KL)]).
  28. have(Element,[Element|_]):-!.
  29. have(Element,[_|Spisok]):-held(Element,Spisok).
  30. goal
  31. held(List).

Решение задачи: «Головоломка про инструменты и языки»

textual
Листинг программы
  1. KL\=ML

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


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

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

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

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

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

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