Пролог, проблемы с базовым случаем - PullRequest
0 голосов
/ 18 мая 2018

Я сейчас пишу функцию поиска пролога A * и столкнулся с проблемой с одним из моих запросов.Поэтому я решил вручную протестировать базовый вариант, так как в этом случае трассировка не удалась.

addAChild([Child],[],[Child]):-
   write(woo empty).

Я вручную запустил:

addAChild([c(1,1,p(1,2)),[]],[],A).

, но он просто не прошел.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 18 мая 2018

[Child] (список из 1 элемента) не может быть объединен с [c(1,1,p(1,2)),[]] (список из 2 элементов).

Вот почему он не работает.

Вы можете вручную проверить винтерактивный интерпретатор, который эти два термина не могут объединить:

?- addAChild([Child],[],[Child]) = addAChild([c(1,1,p(1,2)),[]],[],A).
false.

и затем вы можете рекурсивно проверить, какая часть неисправна.

Имя термина (addAChild) и арность (3), поэтому мы можем исключить эту проблему.

Затем приступим к объединению каждого аргумента:

?- [Child] = A.
A = [Child].

?- [] = [].
true.

?- [Child] = [c(1,1,p(1,2)),[]].
false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...