Логическая задача - Prolog (227078)

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

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

Помогите, пожалуйста дописать решение задачи: Браун, Гриффит, Клеменс и Грин -четверо студентов университетов разных стран встретились на международном фестивале молодёжи и студентов. Один из них – канадец, второй – американец, третий – англичанин, четвёртый – австралиец. Браун и Клеменс были на концерте, в котором принимал участие англичанин. Гриффит и австралиец пели дуэтом под аккомпанемент американца. Австралиец пригласил к себе в гости Грина и собирается пригласить Брауна. Браун за время фестиваля так и не познакомился с Клеменсом. Определите национальности студентов. Большую часть решения я написал, мне осталось записать последнее предложение: Браун за время фестиваля так и не познакомился с Клеменсом. Я не могу понять как его связать с остальными.
Листинг программы
  1. domains
  2. студент = студент(string Имя,string Национальность)
  3. студенты = студент*
  4. sts = string*
  5. имя = string национальность=string
  6. predicates
  7. решение(студенты)
  8. принадл(string,sts)
  9. принадл(студент,студенты)
  10. знаком(имя ,национальность)
  11.  
  12. clauses
  13. знаком("Браун","англичанин").
  14. знаком("Клеменс","англичанин").
  15. знаком("Гриффит","австралиец").
  16. знаком("Гриффит","американец").
  17. знаком("Грин","австралиец").
  18. знаком("Браун","австралиец").
  19.  
  20. решение(Студенты):- Национальности=["англичанин","австралиец","американец","канадец"],
  21.  
  22. принадл(НациональностьБрауна, Национальности),
  23. принадл(НациональностьКлеменса, Национальности),НациональностьКлеменса<>НациональностьБрауна,
  24. принадл(НациональностьГриффита, Национальности),НациональностьГриффита<>НациональностьБрауна,НациональностьГриффита<>НациональностьКлеменса,
  25. принадл(НациональностьГрина, Национальности),НациональностьГрина<>НациональностьБрауна,НациональностьГрина<>НациональностьКлеменса,НациональностьГрина<>НациональностьГриффита,
  26.  
  27. Студенты = [студент("Браун",НациональностьБрауна),студент("Клеменс",НациональностьКлеменса),студент("Гриффит",НациональностьГриффита),студент("Грин",НациональностьГрина)],
  28. принадл(студент(Браун,НациональностьБрауна),Студенты), not(знаком(Браун,НациональностьБрауна)),
  29. принадл(студент(Клеменс,НациональностьКлеменса),Студенты), Браун<>Клеменс,not(знаком(Клеменс,НациональностьКлеменса)),
  30. принадл(студент(Гриффит,НациональностьГриффита),Студенты), Гриффит<>Клеменс,Гриффит<>Браун,not(знаком(Гриффит,НациональностьГриффита)),
  31. принадл(студент(Грин,НациональностьГрина),Студенты), Грин<>Клеменс,Грин<>Браун,Грин<>Гриффит,not(знаком(Грин,НациональностьГрина)).
  32.  
  33. принадл(Эл,[Эл|_]).
  34. принадл(Эл,[_|Список]):- принадл(Эл,Список).
  35. goal
  36. решение(Студенты).

Решение задачи: «Логическая задача»

textual
Листинг программы
  1. nations(Mens, Nations):-
  2.     Mens = [braun, griff, klem, grin],
  3.     Nations = [Braun, Griff, Klem, Grin],
  4.     permutation([can, amer, angl, avstr], Nations),
  5.     Braun \= angl, Klem \= angl, % 1
  6.     Griff \= avstr, Griff \= amer, % 2
  7.     Grin \= avstr, Braun \= avstr, % 3
  8.     Meets = [Griff, avstr, amer], % 4
  9.     not( member(Braun, Meets) ). % 5

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

  1. Создается список Mens с четырьмя элементами: braun, griff, klem, grin.
  2. Создается список Nations с четырьмя элементами: Braun, Griff, Klem, Grin.
  3. Выполняется операция перестановки, в результате которой список Nations принимает значение [can, amer, angl, avstr].
  4. Проверяется, что элемент Braun не равен angl, а элемент Klem не равен angl.
  5. Проверяется, что элемент Griff не равен avstr и не равен amer.
  6. Проверяется, что элемент Grin не равен avstr и не равен braun.
  7. Создается список Meets с тремя элементами: Griff, avstr, amer.
  8. Проверяется, что элемент Braun не является членом списка Meets.

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


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

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

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

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

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

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