Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
13
Добавлен:
06.09.2019
Размер:
310.78 Кб
Скачать

8.6.3. Задачи на упорядочение объектов

Пример

8.5. Рыбак поймал окуня, ерша и щуку. Щуку он поймал раньше окуня, ерша позже щуки, но раньше окуня. Какая рыба поймана раньше всех?

Clauses

Раньше(щука,окунь).

Раньше(щука,ерш).

Раньше(ерш,окунь).

Порядок(X,Y,Z) if раньше(X,Y),раньше(Y,Z).

Goal

Порядок(X,Y,Z).

Упражнения

    1. Ира и Лена одинакового роста. Лена выше Оли, Таня выше Иры. Кто выше: Таня или Оля?

    2. Даны 4 числа X, Y, Z, T. Известно, что Х меньше Y и меньше Т; Y больше Z и больше Т; Z больше Х и меньше Т. В каком порядке расположены числа?

    3. Возле почты растут 6 деревьев: сосна, береза, липа, тополь, ель и клен. Какое дерево самое высокое и какое самое низкое, если известно, что береза ниже тополя, липа выше клена, сосна ниже ели, липа ниже березы, сосна выше тополя.

    4. В очереди за билетами в кино стоят Юра, Миша, Володя, Саша и Олег. Известно, что Юра купил билет раньше Миши, но позже Олега; Володя и Олег не стояли рядом; Саша не находился рядом ни с Олегом, ни с Юрой, ни с Володей. Кто за кем стоит?

    5. На улице, встав в кружок, беседуют 4 девочки: Аня, Валя, Галя, Надя. Девочка в зеленом платье  не Аня и не Валя  стоит между девочкой в голубом платье и Валей. Девочка в белом платье стоит между девочкой в розовом платье и Галей. Какого цвета платье у каждой девочки?

    6. Трое юношей Коля, Петя, Юра влюблены без взаимности в трех девушек: Таню, Зину, Галю. Кто в кого влюблен, если Коля любит девушку, влюбленную в юношу, который любит Зину; Петя любит девушку, влюбленную в юношу, который любит Галю; Зина не любит Юру.

    7. У меня три карандаша: желтый, синий, черный. Можно ли назвать самый короткий и самый длинный в следующих случаях:

  1. черный короче желтого, желтый короче синего;

  2. желтый длиннее черного, черный длиннее синего.

    1. Составить базу знаний по сказке «Репка». Определить весь ряд персонажей, тянущих репку. Составить правила:

  1. кто первый тянет репку;

  2. кто тянет после бабки;

  3. кто на 4 месте?

    1. Воробей, дятел и синица сидели на одной ветке. В каком порядке они сидели, если:

  1. синица сидела слева от дятла, а воробей слева от синицы;

  2. дятел сидел слева от синицы и справа от воробья;

  3. воробей сидел справа от синицы, а дятел справа от воробья.

    1. Береза выше рябины, но ниже тополя. Кто выше: рябина или тополь. Какое дерево самое низкое?

    2. Назовите имена мальчиков самого высокого, среднего и самого низкого, если

  1. Вася ниже Коли, Коля ниже Толи;

  2. Вася ниже Толи, Толя выше Коли.

    1. О четырех числах X, Y, Z, T известно, что Y меньше Х и меньше Т, Х больше Z и больше T, Z больше Y и меньше T. Какое число самое маленькое и какое – самое большое.

8.7. Рекурсия на prolog

8.7.1. Понятие рекурсии на prolog

В предыдущем разделе мы рассмотрели организацию разветвления на PROLOG. Для программирования повторений на процедурных языках существует целая серия операторов цикла. PROLOG-система для этой цели использует совершенно иное, гораздо более мощное средство  рекурсию.

Рекурсией называется обращение структуры к самой себе. Слово «рекурсия» переводится как «обратное движение, возвращение». Используют рекурсию в следующих случаях:

    1. для описания программ, выполнению которых предшествует выполнение их собственной копии;

    2. для описания структур, имеющих другие структуры в качестве компонент.

С первым способом использования рекурсии хорошо знакомы все, кому приходилось программировать на процедурных языках высокого уровня. Второй способ реализован только в языках логического программирования и является естественным приемом представления структур данных. Остановимся на различных вариантах этого способа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]