我一直试图在 Prolog 中找到一个国家的周长。
我有完成的谓词
borders(Country1, Country2, Length)
和
setof(Item, Condition, Set)
它给出了集合中满足条件的所有项目的列表。
为了得到周长,我尝试这样做:
circumference(C, Country) :-
setof(X, borders(Country,_,X), Set),
sum_list(Set,C).
sum_list([], 0).
sum_list([H|T], C) :-
sum_list(T, Rest),
C is H + Rest.
...但我得到的输出只是边界谓词中两国之间的长度。
我的测试:
?– circumference(C,angola).
C = 201 ;
C = 1376 ;
C = 2511 ;
C = 1110.
规则:
borders(angola,namibia,1376).
borders(angola,congo,201).
borders(angola,zambia,1110).
borders(angola,zaire,2511).
为什么不C
成为这些数字的总和?