Задача о любви без взаимности - 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, ". ").

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

  1. Создаются шесть человек: Коля, Дима, Юра, Аня, Лена, Вика.
  2. Задаются три пары людей, которые любят друг друга: Коля любит Лену, Дима любит Вику, а Лена любит Юру.
  3. Три пары людей, которые не любят друг друга: Коля не любит Диму, Дима не любит Колю, а Юра не любит Лену.
  4. Оформляется факт того, что каждый человек должен быть только один раз: Коля не может быть Димой или Юрой, Дима не может быть Колей или Юрой, а Юра не может быть Колей или Димой.
  5. Аналогично оформляется факт того, что каждая девушка должна быть только один раз: Аня не может быть Леней или Викой, Лена не может быть Аней или Викой, а Вика не может быть Аней или Леной.
  6. Формулируется основная задача: нахождение шести пар людей, которые любят друг друга.
  7. Для решения этой задачи используется метод перебора всех возможных комбинаций пар людей и проверки условий, что они любят друг друга, а их имена не совпадают.
  8. Если найдена пара людей, удовлетворяющая всем условиям, то она выводится на экран.
  9. Если не найдено ни одной пары людей, удовлетворяющей всем условиям, то выводится сообщение об этом.

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


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

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

11   голосов , оценка 4.273 из 5