#prolog
#пролог
Вопрос:
У меня есть предикат, который вводит много фактов в базу знаний для описания сетки для игры Wumpus. В принципе, следующий метод генерирует дуги для описания всех возможных переходов игроков.
init_map :- ( cell(X-Y),
adj(X-Y, X1-Y1),
assert(arc_from_to(X-Y, X1-Y1)) ).
Проблема в том, что он печатает true
после каждого утверждения, что не очень хорошо, поскольку важно утверждать все дуги мгновенно.
Ответ №1:
Может быть, вы можете использовать стандартный forall/2
предикат де-факто, который реализует цикл генерации и тестирования?
init_map :-
forall(
(cell(X-Y), adj(X-Y, X1-Y1)),
assert(arc_from_to(X-Y, X1-Y1))
).
Тем не менее, зачем использовать динамический предикат? Почему бы не использовать вместо:
arc_from_to(X-Y, X1-Y1) :-
cell(X-Y),
adj(X-Y, X1-Y1).
Комментарии:
1. Вау, это будет работать так же, как куча динамических?