Задача о любви без взаимности - Prolog
Формулировка задачи:
Задача о любви без взаимности
помогите начинающему чем сможете. И да, если можно, не меняйте сильно метод и структуру.
Решение задачи: «Задача о любви без взаимности»
textual
Листинг программы
PREDICATES male(string) /*Парни*/ female(string) /*Девушки*/ love(string,string) sol(string, string, string, string, string, string) /*решение*/ print. CLAUSES /*заполняем людей*/ male("Kolya"). male("Dima"). male("Yura"). female("Anya"). female("Lena"). female("Vika"). love(X, Y):- male(X), female(Y). love(Y, X):- male(X), female(Y). love("Kolya", Y):-love(Y, X), love(X, "Lena"). love("Dima", Y):-love(Y, X), love(X, "Vika"). love("Lena", X):- male(X), not (X="Yura"). sol(X1, X2, X3, Y1, Y2, Y3):- male(X1), male(X2), male(X3), female(Y1), female(Y2), female(Y3), love(X1, Y1), not(love(Y1,X1)), love(X2, Y2), not(love(Y2,X2)), love(X3, Y3), not(love(Y3,X3)), /*Каждый человек должен быть только один раз*/ X1<>X2, X1<>X3, X2<>X3, Y1<>Y2, Y1<>Y3, Y2<>Y3. /*Печать результатов.*/ print:- sol(X1, X2, X3, Y1, Y2, Y3), write(X1, " - ", Y1, ". ", X2, " - ", Y2, ". ", X3, " - ", Y3, ". ").
Объяснение кода листинга программы
- Создаются шесть человек: Коля, Дима, Юра, Аня, Лена, Вика.
- Задаются три пары людей, которые любят друг друга: Коля любит Лену, Дима любит Вику, а Лена любит Юру.
- Три пары людей, которые не любят друг друга: Коля не любит Диму, Дима не любит Колю, а Юра не любит Лену.
- Оформляется факт того, что каждый человек должен быть только один раз: Коля не может быть Димой или Юрой, Дима не может быть Колей или Юрой, а Юра не может быть Колей или Димой.
- Аналогично оформляется факт того, что каждая девушка должна быть только один раз: Аня не может быть Леней или Викой, Лена не может быть Аней или Викой, а Вика не может быть Аней или Леной.
- Формулируется основная задача: нахождение шести пар людей, которые любят друг друга.
- Для решения этой задачи используется метод перебора всех возможных комбинаций пар людей и проверки условий, что они любят друг друга, а их имена не совпадают.
- Если найдена пара людей, удовлетворяющая всем условиям, то она выводится на экран.
- Если не найдено ни одной пары людей, удовлетворяющей всем условиям, то выводится сообщение об этом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д