我正在处理一个涉及城市列表的问题,并在 Prolog 中找到最接近指定城市的问题。例如,如果我想从这个数据集中找到离西雅图最近的城市
city(5,3, seattle).
city(22,17,nashville).
city(4,7, portland).
city(21,18, memphis).
city(1,11, sacramento).
我有一个谓词/2 定义距离
calc(C1,C2,D) :-
city(V1,H1,C1),
city(V2,H2,C2),
D is ((V1-V2)^2+(H1-H2)^2).
我如何使用 findall/3 计算找到最近城市的距离?