Логическая задача - Prolog (227078)
Формулировка задачи:
Помогите, пожалуйста дописать решение задачи:
Браун, Гриффит, Клеменс и Грин -четверо студентов университетов разных стран встретились на международном фестивале молодёжи и студентов. Один из них – канадец, второй – американец, третий – англичанин, четвёртый – австралиец. Браун и Клеменс были на концерте, в котором принимал участие англичанин. Гриффит и австралиец пели дуэтом под аккомпанемент американца. Австралиец пригласил к себе в гости Грина и собирается пригласить Брауна. Браун за время фестиваля так и не познакомился с Клеменсом. Определите национальности студентов.
Большую часть решения я написал, мне осталось записать последнее предложение: Браун за время фестиваля так и не познакомился с Клеменсом. Я не могу понять как его связать с остальными.
Решение задачи: «Логическая задача»
textual
Листинг программы
nations(Mens, Nations):- Mens = [braun, griff, klem, grin], Nations = [Braun, Griff, Klem, Grin], permutation([can, amer, angl, avstr], Nations), Braun \= angl, Klem \= angl, % 1 Griff \= avstr, Griff \= amer, % 2 Grin \= avstr, Braun \= avstr, % 3 Meets = [Griff, avstr, amer], % 4 not( member(Braun, Meets) ). % 5
Объяснение кода листинга программы
- Создается список
Mensс четырьмя элементами:braun,griff,klem,grin. - Создается список
Nationsс четырьмя элементами:Braun,Griff,Klem,Grin. - Выполняется операция перестановки, в результате которой список
Nationsпринимает значение[can, amer, angl, avstr]. - Проверяется, что элемент
Braunне равенangl, а элементKlemне равенangl. - Проверяется, что элемент
Griffне равенavstrи не равенamer. - Проверяется, что элемент
Grinне равенavstrи не равенbraun. - Создается список
Meetsс тремя элементами:Griff,avstr,amer. - Проверяется, что элемент
Braunне является членом спискаMeets.