Определить профессию каждого члена семьи - Prolog

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

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

В семье пять человек: муж, жена, их сын, сестра мужа и отец жены. Их профессии - инженер, юрист, слесарь, учитель и экономист. Известно, что юрист и учитель - не кровные родственники. Слесарь младше экономиста, и оба играют в футбол за сборную своего завода. Инженер моложе учителя, но старше жены своего брата. Назовите профессии каждого. Ответ сестра мужа - инженер жена - юрист, а учитель - ее муж. слесарь - это сын, а экономист - его дед

Решение задачи: «Определить профессию каждого члена семьи»

textual
Листинг программы
PREDICATES
 
профессия (symbol)
семья (symbol)
 
кровныеРодственники (symbol, symbol)
старше (symbol, symbol)
мужчина (symbol)
соответствие (symbol, symbol)
естьБрат (symbol)
вопрос (symbol, symbol, symbol, symbol, symbol, symbol, symbol, symbol, symbol, symbol)
 
CLAUSES
 
профессия (инженер). профессия (юрист). профессия (слесарь). профессия (экономист). профессия (учитель).
семья (муж). семья (жена). семья (сестраМужа). семья (сын). семья (отецЖены). 
 
% Описываем всевозможные комбинации кровных родственников.
кровныеРодственники(Родственник1, Родственник2):- семья(Родственник1), семья(Родственник2), Родственник1 = муж, Родственник2 = сын; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = сын, Родственник2 = муж;
                          семья(Родственник1), семья(Родственник2), Родственник1 = муж, Родственник2 = сестраМужа; 
                          семья(Родственник1), семья(Родственник2), Родственник2 = муж, Родственник1 = сестраМужа; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = сестраМужа, Родственник2 = сын; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = сын, Родственник2 = сестраМужа;
                          семья(Родственник1), семья(Родственник2), Родственник1 = жена, Родственник2 = сын; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = сын, Родственник2 = жена;
                          семья(Родственник1), семья(Родственник2), Родственник1 = отецЖены, Родственник2 = сын; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = сын, Родственник2 = отецЖены;
                          семья(Родственник1), семья(Родственник2), Родственник1 = жена, Родственник2 = отецЖены; 
                          семья(Родственник1), семья(Родственник2), Родственник1 = отецЖены, Родственник2 = жена.
% Перечисляем мужчин.
мужчина(Родственник):-  семья(Родственник), Родственник = муж;
            семья(Родственник), Родственник = сын;
            семья(Родственник), Родственник = отецЖены.
% Родственник1 старше, чем Родственник2
старше(Родственник1, Родственник2):- семья(Родственник1), семья(Родственник2), Родственник1 = муж, Родственник2 = сын; 
                     семья(Родственник1), семья(Родственник2), Родственник1 = отецЖены, Родственник2 = сын;
                     семья(Родственник1), семья(Родственник2), Родственник1 = отецЖены, Родственник2 = жена;
                     семья(Родственник1), семья(Родственник2), Родственник1 = жена, Родственник2 = сын;
                     семья(Родственник1), семья(Родственник2), Родственник1 = сестраМужа, Родственник2 = жена.
                     
% По условию, инженер старше сестры брата => у инженера есть брат!
естьБрат(Родственник):- семья(Родственник), Родственник = сестраМужа.
 
% Кто угодно может быть инженером.
соответствие (Родственник, Профессия):- семья(Родственник), профессия(Профессия), Профессия = инженер.
% Кто угодно может быть учителем.
соответствие (Родственник, Профессия):- семья(Родственник), профессия(Профессия), Профессия = учитель.
% Кто угодно может быть юристом.
соответствие (Родственник, Профессия):- семья(Родственник), профессия(Профессия), Профессия = юрист.
% Кто угодно может быть слесарем.
соответствие (Родственник, Профессия):- семья(Родственник), профессия(Профессия), Профессия = слесарь.
% Кто угодно может быть экономистом.
соответствие (Родственник, Профессия):- семья(Родственник), профессия(Профессия), Профессия = экономист.
 
вопрос(Р1, П1, Р2, П2, Р3, П3, Р4, П4, Р5, П5):- соответствие(Р1, П1), П1 = инженер, соответствие (Р2, П2), П2 = учитель, 
                         соответствие (Р3, П3), П3 = юрист, соответствие (Р4, П4), П4 = слесарь,
                         соответствие (Р5, П5), П5 = экономист, 
                         мужчина(Р4), мужчина (Р5), естьБрат (Р1),
                         not(кровныеРодственники(Р2, Р3)),
                         старше(Р5, Р4), not(старше (Р1, Р2)),
                         Р1 <> Р2, Р1 <> Р3, Р1 <> Р4, Р1 <> Р5,
                         Р2 <> Р3, Р2 <> Р4, Р2 <> Р5, Р3 <> Р4, Р3 <> Р5, Р4 <> Р5,    
                         П1<>П2, П1<>П3, П1<>П4, П1<>П5, П2<>П3, П2<>П4, П2<>П5, П3<>П4, П3<>П5,    
                         П4<>П5.                    
 
GOAL
вопрос(Р1, П1, Р2, П2, Р3, П3, Р4, П4, Р5, П5).

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы