summaryrefslogtreecommitdiff
path: root/task2.pro
diff options
context:
space:
mode:
Diffstat (limited to 'task2.pro')
-rw-r--r--task2.pro113
1 files changed, 113 insertions, 0 deletions
diff --git a/task2.pro b/task2.pro
new file mode 100644
index 0000000..2479f1d
--- /dev/null
+++ b/task2.pro
@@ -0,0 +1,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.