summaryrefslogtreecommitdiff
path: root/preptast.pro
diff options
context:
space:
mode:
Diffstat (limited to 'preptast.pro')
-rw-r--r--preptast.pro64
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.