【发布时间】:2017-10-03 12:50:33
【问题描述】:
我一直试图在 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 不是这些数字的总和?
【问题讨论】:
-
为什么不
findall/3?你为什么不检查borders(_,Country,X)? -
我想找到与某个特定国家/地区接壤的国家/地区,那只会给我不必要的值吗?
-
找到所有已解决的问题,谢谢!
标签: list recursion prolog sum prolog-setof