summaryrefslogtreecommitdiff
path: root/preptast.pro
blob: 999c1105ad4d64a5600763ee7bcda7f6eeaedd65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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.