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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
% vim:set syntax=prolog:
?- writeln("Задание 2:").
италия("Рим").
италия("Милан").
италия("Неаполь").
италия("Турин").
италия("Палермо").
италия("Генуя").
италия("Болонья").
италия("Флоренция").
италия("Бари").
италия("Катания").
россия("Москва").
россия("Санкт-Петербург").
россия("Новосибирск").
россия("Екатеринбург").
россия("Казань").
россия("Нижний Новгород").
россия("Челябинск").
россия("Красноярск").
россия("Самара").
отдыхает("Саша", "Казань").
отдыхает("Анна", "Самара").
отдыхает("Анна", "Красноярск").
отдыхает("Миша", "Турин").
отдыхает("Коля", "Милан").
отдыхает("Катя", "Палермо").
отдыхает("Виктор", "Москва").
отдыхает("Виктор", "Санкт-Петербург").
отдыхает("Андрей", "Генуя").
отдыхает("Олег", "Болонья").
отдыхает("Ольга", "Флоренция").
отдыхает("Катя", "Неаполь").
отдыхает("Олег", "Красноярск").
женщина("Ольга").
женщина("Катя").
женщина("Саша").
женщина("Анна").
женщина("Катя").
мужчина("Виктор").
мужчина("Виктор").
мужчина("Андрей").
мужчина("Олег").
мужчина("Олег").
мужчина("Миша").
мужчина("Коля").
?- writeln("Список женщин, отдыхающих в России:").
?- forall((отдыхает(Кто, Где), женщина(Кто), россия(Где)), (write("- "), writeln(Кто))).
?- writeln("Список мужчин, отдыхающих в Италии:").
?- forall((отдыхает(Кто, Где), мужчина(Кто), италия(Где)), (write("- "), writeln(Кто))).
?- writeln("\n\nЗадание 4:").
рейс("А505").
рейс("Р420").
рейс("У690").
рейс("М404").
рейс("Т220").
назначение("А505", "Москва").
назначение("Р420", "Саратов").
назначение("У690", "Пермь").
назначение("М404", "Санкт-Петербург").
назначение("Т220", "Грозный").
вылет("А505", 1101).
вылет("Р420", 1253).
вылет("У690", 721).
вылет("М404", 1827).
вылет("Т220", 2205).
дни("А505", "ежедн").
дни("Р420", "чёт").
дни("У690", "нечёт").
дни("М404", "ежедн").
дни("Т220", "чёт").
информация(Номер) :- рейс(Номер)
, назначение(Номер, Город)
, вылет(Номер, Время)
, дни(Номер, Частота)
, write("- Самолёт #"), write(Номер)
, write(", В город: "), write(Город)
, write(", Время: "), write(Время)
, write(", "), writeln(Частота), !.
?- writeln("Информация о всех рейсах:").
?- forall(рейс(Номер), информация(Номер)).
в_город_чёт(Номер, Город) :- назначение(Номер, Город), дни(Номер, "чёт").
?- writeln("Информация о самолётах, вылетающих по чётным дням в Саратов:").
?- forall((рейс(Номер), в_город_чёт(Номер, "Саратов")), информация(Номер)).
ежедн_не_позже(Номер, ВремяФильтр) :- вылет(Номер, Время)
, дни(Номер, "ежедн")
, ВремяФильтр >= Время.
?- writeln("Самолеты, вылетающие ежедневно не позже '12:00':").
?- forall((рейс(Номер), ежедн_не_позже(Номер, 1200)), информация(Номер)).
?- halt.
|