Задачка про сбор урожая - Prolog

Узнай цену своей работы

Формулировка задачи:

Саша, Юля и Оксана помогали собирать урожай - малину, смородину и клубнику. Каждый из них собирал что-то одно. Кто что собирал, если известно, что больше всего было собрано клубники, Саша не собирал смородину, а Саша и Юля вдвоем набрали ягод меньше, чем Оксана? на листочке то я решил, Миша-вишню Коля-крыжовник Дима-смородину а вот как это в прологе реализовать?

Решение задачи: «Задачка про сбор урожая»

textual
Листинг программы
domains
list = symbol*
 
predicates
select(symbol, list, list)
 
clauses
select(H, [H|T], T).
select(X, [H|T1], [H|T2]) :-
    select(X, T1, T2).
 
goal
L1 = ["малину", "смородину", "клубнику"],
select(Sasha, L1, L2),
select(Yula, L2, L3),
select(Oksana, L3, _),
Oksana = "клубнику",
not(Sasha = "смородину"),
write("Саша собирала ", Sasha), nl,
write("Юля собирала ", Yula), nl,
write("Оксана собирала ", Oksana), nl.

Объяснение кода листинга программы

  1. Задана структура списка, он может содержать символы.
  2. Задана структура предиката select, который принимает три аргумента: символ, список, список.
  3. Задано правило для предиката select, которое позволяет обрабатывать список, состоящий из одного элемента.
  4. Задано правило для предиката select, которое позволяет обрабатывать список, состоящий из двух элементов.
  5. Задана цель, которую нужно достичь.
  6. Заданы значения переменных:   Sasha = малина   Yula = смородина   * Oksana = клубника
  7. Задано условие, которое говорит, что Sasha не должна быть равна смородина.
  8. Задано выражение для вывода на экран информации о сборе урожая.
  9. Выполняется сбор урожая:   Саша собирает малину.   Юля собирает смородину.   * Оксана собирает клубнику.
  10. Выводится на экран информация о сборе урожая.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5