summaryrefslogtreecommitdiff
path: root/task2.pro
blob: 2479f1d223b60fc114b606831551d7d29847f614 (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
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.