Определить профессию каждого члена семьи - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д