diff options
Diffstat (limited to 'preptast.pro')
| -rw-r--r-- | preptast.pro | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/preptast.pro b/preptast.pro new file mode 100644 index 0000000..999c110 --- /dev/null +++ b/preptast.pro @@ -0,0 +1,64 @@ +% vim:set syntax=prolog: + +% Задание 1.1 +родитель("Михаил", "Алексей"). +родитель("Евдокия", "Алексей"). +родитель("Алексей", "Феодор"). +родитель("Алексей", "Софья"). +родитель("Алексей", "Иоанн"). +родитель("Мария", "Феодор"). +родитель("Мария", "Софья"). +родитель("Мария", "Иоанн"). +родитель("Алексей", "Пётр"). +родитель("Наталья", "Пётр"). +родитель("Пётр", "Анна"). +родитель("Пётр", "Елизавета"). +родитель("Екатерина", "Анна"). +родитель("Екатерина", "Елизавета"). + +% Задание 1.2 +?- writeln("Родители Петра Первого:"). +?- forall(родитель(Кто, "Пётр"), (write("- "), writeln(Кто))). +?- writeln("Дети Петра Первого:"). +?- forall(родитель("Пётр", Кто), (write("- "), writeln(Кто))). + +% Задание 2.1 +женщина("Анна"). +женщина("Мария"). +женщина("Софья"). +женщина("Евдокия"). +женщина("Наталья"). +женщина("Екатерина"). +женщина("Елизавета"). + +мужчина("Пётр"). +мужчина("Михаил"). +мужчина("Феодор"). +мужчина("Алексей"). + +% Задание 2.2 +мать(Кто, Кого) :- родитель(Кто, Кого), женщина(Кто). +отец(Кто, Кого) :- родитель(Кто, Кого), мужчина(Кто). +сын(Кто, Кого) :- родитель(Кого, Кто), мужчина(Кто). +дочь(Кто, Кого) :- родитель(Кого, Кто), женщина(Кто). + +?- writeln("Сыновья Алексея Михайловича:"). +?- forall(сын(Кто, "Алексей"), (write("- "), writeln(Кто))). + +% Задание 3.3 +бабушка(Прародитель, Потомок) :- + родитель(Прародитель, Родитель), + родитель(Родитель, Потомок), + женщина(Прародитель). + +общий_родитель(Чел1, Чел2) :- родитель(Кто, Чел1), родитель(Кто, Чел2). + +брат(Брат, Кого) :- + общий_родитель(Брат, Кого), + мужчина(Брат), + not(Брат = Кого). + % (мать(Мать, Брат), мать(Мать, Кого); отец(Отец, Брат), отец(Отец, Кого)). + +?- forall(брат(Кто, "Софья"), writeln(Кто)). + +% ?- halt. |