我正在尝试按照完成它们所需的距离对路径列表进行排序。我正在使用的Prolog代码如下。
当我致电sortRoutes
时,我从Prolog那里得到一个存在错误,说predsort
不存在。但是,我正在使用排序模块,似乎没有任何改变。
我似乎无法弄清楚为什么这不起作用。我做错了吗?
谢谢!
:- use_module(library(sort)).
sortRoutes(DistRoutes, SortedRoutes) :-
predsort(distCompare, DistRoutes, SortedRoutes).
distCompare(Comp, E1, E2) :-
my_nth(2, E1, Dist1),
my_nth(2, E2, Dist2),
compDists(Dist1, Dist2).
compDists(>, Dist1, Dist2) :-
Dist1 > Dist2.
compDists(<, Dist1, Dist2) :-
Dist1 =< Dist2.
答案 0 :(得分:0)
我认为distCompare应该是
distCompare(Comp, E1, E2) :-
my_nth(2, E1, Dist1),
my_nth(2, E2, Dist2),
compDists(Comp, Dist1, Dist2).