Логическая задача про экскурсию - Prolog

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

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

Здравствуйте. Обращаюсь к вам с просьбой помочь мне с одной не простой (на мой взгляд) задачей. Дело в том, что она является допуском к экзамену. перерыл все форумы, но нигде не нашёл решения похожей задачи.

Ученики из одного класса, одной школы организовали экскурсию в горы, куда пригласили и родителей. 3 автобуса в общей сумме 89 персонами(отцы, матери, преподаватели и ученики). Из которых женщин на 7 персон больше чем мужчин, детей на 45 больше чем женщин. Сколько женщин, сколько мужчин, сколько детей поехало на экскурсию.

Нужно решить задачу используя логический язык программирования PROLOG. Прошу помочь кто чем может, хотя бы начало или какой-то фрагмент задачи. Очень нужно, спасибо на перёд.

Решение задачи: «Логическая задача про экскурсию»

textual
Листинг программы
trip(M, F, C) :-
    M0 is 1,
    F0 is M0 + 7,
    C0 is F0 + 45,
    trip(M0, F0, C0, M, F, C, 89).
 
trip(M, F, C, M, F, C, P) :-
    P =:= M + F + C,
    !.
trip(M0, F0, C0, M, F, C, P) :-
    M1 is M0 + 1,
    F1 is F0 + 1,
    C1 is C0 + 1,
    trip(M1, F1, C1, M, F, C, P).

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

  1. trip(M, F, C) :- M0 is 1, F0 is M0 + 7, C0 is F0 + 45, trip(M0, F0, C0, M, F, C, 89). В данном выражении задается факт о том, что функция trip принимает шесть аргументов и возвращает значение 89. Также здесь определяется набор начальных значений для переменных M0, F0 и C0, которые будут использоваться в дальнейшем. Переменные M, F и C будут использоваться для хранения промежуточных результатов.
  2. trip(M, F, C, M, F, C, P) :- P =:= M + F + C, !. Здесь определяется факт о том, что шестой аргумент функции trip (P) будет равен сумме значений трех других аргументов (M, F и C). Знак =: используется для проверки равенства, а символ ! обозначает конец последовательности правил.
  3. trip(M0, F0, C0, M, F, C, P) :- M1 is M0 + 1, F1 is F0 + 1, C1 is C0 + 1, trip(M1, F1, C1, M, F, C, P). В этом выражении определяется рекурсивный случай функции trip. Если значения переменных M0, F0 и C0 больше 1, то происходит вызов функции trip с новыми значениями M1, F1 и C1. Если значения переменных M0, F0 и C0 равны 1, то происходит возврат значения P, которое было определено в предыдущем факте.

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


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

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

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