У меня есть пара связанных элементов с указанием стоимости их обхода:
link(a, b, 100).
link(b, c, 223).
link(c, d, 311).
Я хочу узнать, возможен ли обход, и, если это возможно, вернуть общую стоимость.
Так что вопрос ?-count(a, d, X).
возвращает X = 634
.
Вот моя попытка сделать это:
sum(A, B, X) :-
X is A + B.
count(Start, Finish, Cost) :-
link(Start, Finish, Cost).
count(Start, Finish, Cost) :-
link(Start, Through, Tempcost),
count(Through, Finish, Newcost),
sum(Cost, Tempcost, Newcost).
Проблема заключается в том, что, хотя у меня есть общее представление о том, как увеличить на фиксированное число, мне трудно складывать совершенно разные числа и передавать их в рекурсию.
Мой текущий код возвращает ошибку «Недостаточный аргумент. Создан экземпляр». Я знаю, что это часто как-то связано с порядком кода, поэтому я попытался изменить его, но пока безуспешно.