Программирование на языке ПРОЛОГ для искуственного интеллекта




Усовершенствование процедуры ответпольз - часть 13


        копия( Терм, НовТерм) :-
                                        % Копия Терм' а с новыми переменными
                asserta( copy( Терм) ),
                retract( сору( НовТерм) ),  !.

        посл_индекс( 0).                 % Начальный индекс для "сказано"

        след_индекс( Инд) :-         % Следующий индекс для "сказано"
                retract( посл_индекс( ПослИнд) ),  !,
                Инд is ПослИнд + 1,
                assert( посл_индекс( Инд) ).

line();

Рис. 14. 11.  Оболочка экспертной системы: Вопросы к пользователю
и ответы на вопросы "почему".

        нумпер( Терм, N, М) :-
                Терм =.. [Функтор | Аргументы],
            % Структура или атом
                нумарг( Аргументы, N, M).
                                        % Пронумеровать переменные в аргументах
        нумарг( [ ], N, N) :-  !.

        нумарг( [X | Спис], N, M) :-
                нумпер( X, N, N1),
                нумарг( Спис, N1, М).




Содержание  Назад  Вперед