Я пишу основную программу на прологе, но у меня не получается.Это код:
Мой код пролога.
borders(sweden,finland,586).
borders(norway,sweden,1619).
allborders(X,Y,L) :- borders(X,Y,L).
allborders(X,Y,L) :- borders(Y,X,L).
addborders(C,Lsum,Set) :- length(Set,0), write(C), write(' - '), write(Lsum), C == Lsum.
addborders(C,Lsum,[H|T]) :- Lsum2 is Lsum + H, addborders(C,Lsum2,T).
helpsetofpredicate(Country,L) :- allborders(Country,_,L).
circumference(C,Country) :- setof(L,helpsetofpredicate(Country,L),Set), addborders(C,0,Set).
(Obs: границы - это всего лишь небольшой пример для гигантского файла, но их достаточно для описания проблемы)
Таким образом, эта программа должна суммировать все границы со страной и проверить, является ли данная окружность (C) суммой окружности страны (Страна).Если бы я набрал
circumference(2205,sweden).
, программа выдаст true, что и ожидается.Но если я наберу
circumference(C,sweden).
, программа выдаст false.Я поместил некоторые записи в коде, чтобы увидеть, какие значения имеют C и Lsum, и вывод равен _G962 - 2205. Почему пролог не присваивает C правильное значение вместо того, чтобы присвоить ему случайное значение?