Решение задач с книгами - Prolog
Формулировка задачи:
Здравствуйте. Есть программа на prolog, которая ищет все книги, у которых количество страниц больше 300
И есть к нему задание:
Добавьте в программу правила:
1. Отыскивающее самую тонкую книгу в БД;
2. Отыскивающее самую толстую книгу в БД;
3. Отыскивающее все книги в БД, не являющиеся самой тонкой и самой толстой;
4. Определяющее наличие самой тонкой и самой толстой книги в Базе Данных среди произведений заданного автора;
5. Определяющее самую тонкую и самую толстую книгу для заданного автора;
6. Отыскивающее в БД для заданного автора все книги, которые он не писал.
Подскажите, как будет происходить хотя бы нахождение максимального или минимального числа страниц книги?
Листинг программы
- implement main
- open core, console
- class facts
- book:(symbol Title, integer Pages).
- written_by:(symbol Author, symbol Title).
- class predicates
- long_novel:(symbol Title) nondeterm(o).
- clauses
- written_by("Александр Сергеевич Пушкин", "Дубровский").
- written_by("Александр Сергеевич Пушкин", "Капитанская дочка").
- written_by("Николай Васильевич Гоголь", "Ревизор").
- book("Дубровский", 250).
- book("Капитанская дочка", 310).
- book("Ревизор", 380).
- clauses
- long_novel(Title):- written_by(_, Title), book(Title, Length), Length > 300.
- clauses
- run():- init(),
- long_novel(Title), write(Title, "\n"), nl, fail.
- run().
- end implement main
- goal
- mainExe::run(main::run).
Решение задачи: «Решение задач с книгами»
textual
Листинг программы
- BL = [L || book(_, L)],
Объяснение кода листинга программы
- В коде используется язык программирования Prolog.
- Задача заключается в решении задач с книгами.
- В коде присутствует список BL, который содержит в себе все элементы, удовлетворяющие условию book(_, L).
- Условие book(_, L) означает, что в списке BL находятся все элементы, которые являются книгами.
- Каждый элемент списка BL представляет собой список, в котором первый элемент - название книги, а остальные элементы - список задач, связанных с этой книгой.
- Формально, список BL можно представить в виде: BL = [L || book(_, L)], где L - список задач, связанных с книгой.
- В данном случае, переменная L заменена на список задач, чтобы упростить понимание кода.
- Таким образом, BL - это список списков, где каждый внутренний список содержит название книги и список задач, связанных с этой книгой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д