Читаем Prolog полностью

принадлежит( X, [Y | L] ) :-

      принадлежит( X, L ).

день_выл( День, СписДней) :-

      принадлежит( День, СписДней).

день_выл( День, ежедневно) :-

      принадлежит( День, [пн, вт, ср, чт, пт, сб, вс] ).

маршрут( P1, P2, День, [Р1-Р2 : Np : ВрОтпр] ) :-

                                                % прямой рейс

      рейс( P1, P2, День, Np, ВрОтпр, _ ).

маршрут( Р1, Р2, День, [Pl-P3 : Np1 : Oтпp1 | Маршрут]) :-

                                                % маршрут с пересадками

      маршрут( Р3, P2, День, Маршрут ),

      рейс( Р1, Р3, День, Npl, Oтпp1, Приб1),

      вр_отпр( Маршрут, Отпр2),

      пересадка( Приб1, Отпр2).

вр_отпр( [Р1-Р2 : Np : Отпр | _ ], Отпр).

пересадка( Часы1 : Минуты1, Часы2 : Минуты2) :-

      60 * (Часы2-Часы1) + Минуты2 - Минуты1 >= 40

% БАЗА ДАННЫХ О РЕЙСАХ САМОЛЕТОВ

расписание( эдинбург, лондон,

      [ 9:40 / 10:50 / bа4733 / ежедневно,

      13:40 / 14:50 / ba4773 / ежедневно,

      19:40 / 20:50 / bа4833 / [пн, вт, ср, чт, пт, вс] ] ).

расписание( лондон, эдинбург,

      [ 9:40 / 10:50 / bа4732 / ежедневно,

      11:40 / 12:50 / bа4752 / ежедневно,

      18:40 / 19:50 / bа4822 / [пн, вт, ср, чт, пт] ] ),

расписание( лондон, любляна,

      [13:20 / 16:20 / ju201 / [пт],

       13:20 / 16:20 / ju213 / [вс] ] ).

расписание( лондон, цюрих,

      [ 9:10 / 11:45 / bа614 / ежедневно,

      14:45 / 17:20 / sr805 / ежедневно ] ).

расписание( лондон, милан,

      [ 8:30 / 11:20 / bа510 / ежедневно,

      11:00 / 13:50 / az459 / ежедневно ] ).

расписание( любляна, цюрих,

      [11:30 / 12:40 / ju322 / [вт,чт] ] ).

расписание( любляна, лондон,

      [11:10 / 12:20 / yu200 / [пт],

       11:25 / 12:20 / yu212 / [вс] ] ).

расписание( милан, лондон,

      [ 9:10 / 10:00 / az458 / ежедневно,

      12:20 / 13:10 / bа511 / ежедневно ] ).

расписание( милан, цюрих,

      [ 9:25 / 10:15 / sr621 / ежедневно,

      12:45 / 13:35 / sr623 / ежедневно ] ).

расписание( цюрих, любляна,

      [13:30 / 14:40 / yu323 / [вт, чт] ] ).

расписание( цюрих, лондон,

      9:00 / 9:40 / bа613 /

      [ пн, вт, ср, чт, пт, сб],

      16:10 / 16:55 / sr806 / [пн, вт, ср, чт, пт, сб] ] ).

расписание( цюрих, милан,

      [ 7:55 / 8:45 / sr620 / ежедневно ] ).

Рис. 4. 5.  Планировщик воздушных маршрутов и база данных о рейсах самолетов.

Как мне добраться из Любляны в Эдинбург в четверг?

        ?- маршрут( любляна, эдинбург, чт, R).

        R = [любляна-цюрих : уu322 : 11:30, цюрих-лондон:

        sr806 : 16:10,

        лондон-эдинбург : bа4822 : 18:40 ]

Как мне посетить Милан, Любляну и Цюрих, вылетев из Лондона во вторник и вернувшись в него в пятницу, совершая в день не более одного перелета? Этот вопрос сложнее, чем предыдущие. Его можно сформулировать, использовав отношение перестановка, запрограммированное в гл. 3. Мы попросим найти такую перестановку городов Милан, Любляна и Цюрих, чтобы соответствующие перелеты можно было осуществить в несколько последовательных дней недели:

        ?- перестановка( [милан, любляна, цюрих],

                                        [Город1, Город2, Город3] ),

        рейс( лондон, Город1, вт, Np1, Oтпp1, Пpиб1),

        peйc( Город1, Город2, ср, Np2, Отпр2, Приб2),

        рейс( Город2, Город3, чт, Np3, Отпp3, Приб3),

Перейти на страницу:

Похожие книги

12 великих трагедий
12 великих трагедий

Книга «12 великих трагедий» – уникальное издание, позволяющее ознакомиться с самыми знаковыми произведениями в истории мировой драматургии, вышедшими из-под пера выдающихся мастеров жанра.Многие пьесы, включенные в книгу, посвящены реальным историческим персонажам и событиям, однако они творчески переосмыслены и обогащены благодаря оригинальным авторским интерпретациям.Книга включает произведения, созданные со времен греческой античности до начала прошлого века, поэтому внимательные читатели не только насладятся сюжетом пьес, но и увидят основные этапы эволюции драматического и сценаристского искусства.

Александр Николаевич Островский , Иоганн Вольфганг фон Гёте , Оскар Уайльд , Педро Кальдерон , Фридрих Иоганн Кристоф Шиллер

Драматургия / Проза / Зарубежная классическая проза / Европейская старинная литература / Прочая старинная литература / Древние книги
Волчья тропа
Волчья тропа

Мир после ядерной катастрофы. Человечество выжило, но высокие технологии остались в прошлом – цивилизация откатилась назад, во времена Дикого Запада.Своенравная, строптивая Элка была совсем маленькой, когда страшная буря унесла ее в лес. Суровый охотник, приютивший у себя девочку, научил ее всему, что умел сам, – ставить капканы, мастерить ловушки для белок, стрелять из ружья и разделывать дичь.А потом она выросла и узнала страшную тайну, разбившую вдребезги привычную жизнь. И теперь ей остается только одно – бежать далеко на север, на золотые прииски, куда когда-то в поисках счастья ушли ее родители.Это будет долгий, смертельно опасный и трудный путь. Путь во мраке. Путь по Волчьей тропе… Путь, где единственным защитником и другом будет таинственный волк с черной отметиной…

Алексей Семенов , Бет Льюис , Даха Тараторина , Евгения Ляшко , Сергей Васильевич Самаров

Фантастика / Приключения / Боевик / Славянское фэнтези / Прочая старинная литература