выполн_все( _, [ ], _, [ ]).

        выполн_все( Совет, [Ход . . Поз | ХПспис], КорнПоз,

                                                                [Ход . . ФД | ФДД] ) :-

                выполн( Совет, Поз, КорнПоз, ФД),

                выполн_все( Совет, ХПспис, КорнПоз, ФДД).

% Интерпретация главной цели и цели-поддержки:

% цель - это И / ИЛИ / НЕ комбинация. имен предикатов

        удовл( Цель1 и Цель2, Поз, КорнПоз) :-  !,

                удовл( Цель1, Поз, КорнПоз),

                удовл( Цель2, Поз, КорнПоз).

        удовл( Цель1 или Цель2, Поз, КорнПоз) :-  !,

                ( удовл( Цель1, Поз, КорнПоз);

                удовл( Цель2, Поз, КорнПоз) ).

        удовл( не Цель, Поз, КорнПоз) :-  !,

                not удовл( Цель, Поз, КорнПоз ).

        удовл( Пред, Поз, КорнПоз) :-

                ( Усл =.. [Пред, Поз];

                                            % Большинство предикатов не зависит от КорнПоз

                    Усл =.. [Пред, Поз, КорнПоз] ),

                call( Усл).

% Интерпретация ограничений на ходы

        ход( Ходы1 и Ходы2, Поз, Ход, Поз1) :-  !,

                ход( Ходы1, Поз, Ход, Поз1),

                ход( Ходы2, Поз, Ход, Поз1).

        ход( Ходы1 затем Ходы2, Поз, Ход, Поз1) :-  !,

                ( ход( Ходы1, Поз, Ход, Поз1);

                  ход( Ходы2, Поз, Ход, Поз1) ).

% Доступ к компонентам элементарного совета

        главцель( ГлЦ : _, ГлЦ).

        поддержка( ГлЦ : ЦП : _, ЦП).

        ходы_игрока( ГлЦ : ЦП : ХодыИгрока : _, Ходы Игрока).

        ходы_противника( ГлЦ : ЦП: ХодыИгр : ХодыПр :_,

                                          ХодыПр).

        принадлежит( X, [X | Спис]).

        принадлежит( X, [Y | Спис]) :-

                принадлежит( X, Спис).

Рис. 15. 6.  Миниатюрный интерпретатор языка AL0.

        игра( Поз)

где Поз - выбранная начальная позиция. Если в позиции Поз ходит противник, то программа принимает его ход, в противном случае - 'консультируется' с таблицей советов, приложенной к программе, порождает форсированное дерево и делает свой ход в

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату