% 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.