From ebf4892f76e48b248db906d5125428c338d936a5 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Sun, 5 May 2024 19:10:33 +0400 Subject: =?UTF-8?q?=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B5=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task2.pro | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 task2.pro 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. -- cgit v1.2.3