Добавление в базу экспертной системы - Prolog
Формулировка задачи:
Экспертная система.
Имеется база животных, заданная в исходнике. Как добавить какое-то животное пользователю в эту базу? Например сначала ввести имя, а потом по очереди задавать те же вопросы, что есть в программе, например умеет ли летать или умеет плавать. Каким образом реализуется добавление?
Решение задачи: «Добавление в базу экспертной системы»
textual
Листинг программы
animal(Name):-animal(Name,Params),check(Params). check([]). check([p(A)|Tail]):-positive(A),check(Tail). check([n(A)|Tail]):-negative(A),check(Tail). check([is(A)|Tail]):-is(A),check(Tail).
Объяснение кода листинга программы
animal(Name):-animal(Name,Params),check(Params).
- это определение функцииanimal/2
, которая принимает два аргумента:Name
иParams
. Она рекурсивно вызывает саму себя с аргументамиName
иParams
, а затем вызывает функциюcheck/1
с аргументомParams
.check([]).
- это определение функцииcheck/1
, которая принимает пустой список в качестве аргумента и завершается успешно, не делая ничего.check([p(A)|Tail]):-positive(A),check(Tail).
- это рекурсивный вызов функцииcheck/1
, который происходит, когда списокParams
начинается сp(A)
. Функцияpositive/1
проверяет, является лиA
положительным, и если это так, то функцияcheck/1
вызывается рекурсивно с аргументомTail
.check([n(A)|Tail]):-negative(A),check(Tail).
- это рекурсивный вызов функцииcheck/1
, который происходит, когда списокParams
начинается сn(A)
. Функцияnegative/1
проверяет, является лиA
отрицательным, и если это так, то функцияcheck/1
вызывается рекурсивно с аргументомTail
.check([is(A)|Tail]):-is(A),check(Tail).
- это рекурсивный вызов функцииcheck/1
, который происходит, когда списокParams
начинается сis(A)
. Функцияis/1
проверяет, является лиA
истинным, и если это так, то функцияcheck/1
вызывается рекурсивно с аргументомTail
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д